Pomoglibyście znaleźć błąd?
Ostatnio zmodyfikowano 2010-09-19 19:19
Elejdor Temat założony przez niniejszego użytkownika |
Pomoglibyście znaleźć błąd? » 2010-09-19 17:34:15 #include <iostream> #include <cstdio> using namespace std;
int main() { int pola; char nazwa[ pola ][ 50 ]; cout << "Podaj ilosc pozycji: "; cin >> pola; cin.get(); for( int i = 1; i <= pola; i++ ) { cout << "\n\n Podaj nazwe pola " << i << endl; cin.get( nazwa[ i - 1 ], 50 ); cin.get(); }; getchar(); return 0; }
wyświetla się Segmentation fault. |
|
pekfos |
» 2010-09-19 17:45:09 int pola; char[ pola ][ 50 ] tak nie wolno. |
|
Elejdor Temat założony przez niniejszego użytkownika |
» 2010-09-19 17:52:56 W sumie poprawiłem i na kolejnym etapie, kolejny błąd którego nie rozumiem.
if(nazwa[i-1][0]==szukaj)
error: ISO C++ forbids comparison between pointer and integer
chcę, żeby warunek był spełniony gdy pierwsza litera wiersza i-1 jest równa zmiennej szukaj. (int i=1 zadeklarowana jest w for) Domyślam się, że chodzi o to, że podałem dwie wartości, ale nie wiem jak to zrobić. Tak jak wyżej nazwa jest tabelą dwuwymiarową. |
|
dmx81 |
» 2010-09-19 18:18:46 komunikat mowi, ze porownujesz wskaznik z liczba, co zwraca wlasnie blad - pokaz calosc jak masz to moze cos poradzimy |
|
Elejdor Temat założony przez niniejszego użytkownika |
» 2010-09-19 18:19:41 #include <iostream> #include <cstdio> using namespace std;
int main() { int pola = 0; char nazwa[ pola ][ 50 ]; char szukaj[ 3 ]; cout << "Podaj ilosc pozycji: "; cin >> pola; cin.get(); for( int i = 1; i <= pola; i++ ) { cout << "\n\n Podaj nazwe pola " << i << endl; cin.get( nazwa[ i - 1 ], 50 ); cin.get(); }; cout << "Podaj pierwsza litere: "; ( cin >> szukaj ).get(); for( int i = 1; i <= pola; i++ ) { if( nazwa[ i - 1 ][ 0 ] == szukaj ) { cout << nazwa[ i - 1 ]; }; } getchar(); return 0; } |
|
ison |
» 2010-09-19 19:19:29 ten zapis int pola = 0; char nazwa[ pola ][ 50 ];
jest rownoznaczny z ktory raczej nie ma sensu w tej linijce: if( nazwa[ i - 1 ][ 0 ] == szukaj )
zmienna szukaj to tablica, co miałby oznaczać operator == w takiej sytuacji? (w Twoim przypadku oczywiście) //edit, nie wiem czy dokładnie to było twoim zadaniem ale tak na szybko poprawiłem kod aby wypisywał wszystkie słowa zaczynające się na daną literę #include <iostream>
using namespace std;
int main() { char nazwa[ 50 ][ 50 ]; char szukaj; int pola; cout << "Podaj ilosc pozycji: "; cin >> pola; cin.ignore(); for( int i = 1; i <= pola; ++i ) { cout << "\n\n Podaj nazwe pola " << i << endl; cin.get( nazwa[ i - 1 ], 50 ); cin.ignore(); } cout << "Podaj pierwsza litere: "; cin >> szukaj; cin.ignore(); for( int i = 1; i <= pola; ++i ) { if( nazwa[ i - 1 ][ 0 ] == szukaj ) { cout << nazwa[ i - 1 ] << endl; } } while( 1 ); }
wg mnie lepiej byłoby dla Ciebie gdybyś korzystał z std::string podczas gdy STL umożliwia łatwe operowanie na ciągach znaków dla początkujących to ty męczysz się z dwuwymiarowymi tablicami charów |
|
« 1 » |