[Rozdział 24] problem z programem przykładowym
Ostatnio zmodyfikowano 2012-05-15 09:47
willhelm Temat założony przez niniejszego użytkownika |
[Rozdział 24] problem z programem przykładowym » 2012-05-14 14:14:11 Nie wiem, czy mam zły kompilator, ale ten kod nie działa tak, jak powinien. Po uruchomieniu pyta o liczbę, ale jak się wpisze literę to się zapętla i drukuje w kółko ten sam tekst. Co w nim jest źle? #include <iostream>
using namespace std;
bool wczytaj_liczbe( int & liczba ) { cin.clear(); cin.sync(); cin >> liczba; return cin.good(); }
int main() { int x; do { cout << "Podaj liczbe: "; } while( wczytaj_liczbe( x ) == false ); cout << "Liczba podana to: " << x << endl; return 0; } |
|
flex55 |
» 2012-05-14 15:20:49 no wygląda, że kod jest dobry, z resztą przetestowałem u siebie i działa poprawnie. ja korzystam z visual studio 2010. jak też korzystasz z visuala to daj Clean Solution i jeszcze raz skompiluj, może pomoże ;) |
|
kubawal |
» 2012-05-14 15:42:50 Musisz wyczyścić konsolę po nieudanej próbie w funkcji pobierz_liczbe() sprawdzasz, czy cin.good() == 0 ,jeśli tak to zwracasz 0 ,jeśli nie, to czyścisz konsolę (cin.clear()) i zwracasz 1. |
|
willhelm Temat założony przez niniejszego użytkownika |
» 2012-05-14 16:31:33 Przecież to wszystko jest już w funkcji. Zresztą if( std::cin.good() == 0 ) { return 0; } else { std::cin.clear(); return 1; } nic nie zmienia. Program (nie)działa tak samo. flex55: Nie może Ci to działać, bo Visual potrzebuje dołączyć sobie jeszcze mały pliczek stdafx.h. Zresztą Visual jest tylko na windowsaa, a ja koszystam z linuksa. Na żadnym z GUI do c++ program nie działa tak, jak powinien. |
|
pekfos |
» 2012-05-14 16:37:58 |
|
willhelm Temat założony przez niniejszego użytkownika |
» 2012-05-14 16:53:43 pekfos: Wciąż nie działa... Choć próbowałem na różne sposoby: #include <iostream>
using namespace std;
bool wczytaj_liczbe( int & liczba ) { cin.clear(); cin.sync(); cin >> liczba; if( cin.good() == 0 ) { return 0; } else { cin.clear(); cin.sync(); return 1; } }
int main() { int x; do { cout << "Podaj liczbe: "; } while( wczytaj_liczbe( x ) == false ); cout << "Liczba podana to: " << x << endl; return 0; } |
|
DejaVu |
» 2012-05-14 16:57:00 bool bResult = cin.good(); cin.clear(); cin.sync(); return bResult; |
|
willhelm Temat założony przez niniejszego użytkownika |
» 2012-05-14 17:13:30 wciąż bez zmian. nie działa. ale może działa u Was, to przestanę się z tym męczyć:) |
|
« 1 » 2 |