[C++] Zamiana char* na int. Błąd.
Ostatnio zmodyfikowano 2015-11-30 19:57
vancarek Temat założony przez niniejszego użytkownika |
[C++] Zamiana char* na int. Błąd. » 2015-11-30 19:38:54 Cześć, Mam do napisania projekt na zaliczenie - warcaby. Utknąłem w takiej funkcji. Ma ona opisywać ruch pierwszego z graczy. Wiem, nie jest dokończona. Wg tej funkcji gracz miałby wpisywać wiersz literę, kolumnę cyfrę i kierunek, który też jest określony przez liczbę. Utknąłem przy zamianie char* na int. "i" oraz "j" mają oznaczać miejsce w tablicy/na polu gry. Od i, j i ruch chcę utworzyć warunki, po których pionek x się przesunie. Próbowałem już na różne sposoby zamiany char* na int. Znalazłem atoi, które wydawało się perfekcyjne w zastosowaniu, jednak, gdy przed atoi dodawałem cin, którym miała być wprowadzona zmienna dla atoi program padał. Pilnie proszę o pomoc ! :) void ruchgracza1( poleGry & P ) { char * wiersz; int i, j, ruch; cout << "Ruch x. Wybierz pionek." << endl; cout << "Wiersz:"; cin >> wiersz; if( wiersz == "A" ) i = 0; else if( wiersz == "B" ) i = 1; else if( wiersz == "C" ) i = 2; else if( wiersz == "D" ) i = 3; else if( wiersz == "E" ) i = 4; else if( wiersz == "F" ) i = 5; else if( wiersz == "G" ) i = 6; else if( wiersz == "H" ) i = 7; cout << "Kolumna:"; cin >> j; cout << "Wybierz kierunek:"; cin >> ruch; } |
|
Pawlo3 |
» 2015-11-30 19:42:44 Jednak, gdy przed atoi dodawałem cin, którym miała być wprowadzona zmienna dla atoi program padał. |
Padał, bo nie zaalokowałeś pamięci dla char * wiersz! Musisz zrobić tak: char * wiersz = malloc( ); Utknąłem przy zamianie char* na int. |
Przy analizie twojego kodu pomyślałem, że skoro używasz JEDNEGO znaku, mógłbyś zrobić: char wiersz; Potem mógłbyś zamienić w if - ach cudzysłowy na apostrofy ('). Tak nie da się porównywać łańcuchów typu char *! Musisz użyć funkcji strcmp().[/cytat] |
|
pekfos |
» 2015-11-30 19:48:39 char * wiersz; cin >> wiersz;
|
Jak chcesz zapisać jakiekolwiek dane do pamięci, która nie istnieje? else if( wiersz == "D" ) i = 3;
|
To nie jest porównanie tekstów. Najprościej poprawić oba problemy, zmieniając typ zmiennej wiersz na std::string. |
|
vancarek Temat założony przez niniejszego użytkownika |
Zamiana char* na int » 2015-11-30 19:57:51 Zamiana na string pomogła. Dzięki za pomoc. |
|
« 1 » |