[praca domowa] lekcja 15, zad1
Ostatnio zmodyfikowano 2012-02-12 23:30
Kelemes Temat założony przez niniejszego użytkownika |
[praca domowa] lekcja 15, zad1 » 2012-02-03 17:54:09 Cześć Mam problem z tym zadaniem. Zrobiłem program, ale za nic nie potrafię osiągnąć celu, czyli braku zapętlania się w nieskończoność przy błędzie. Nie mam pojęcia w którym momencie czyścić kanał wejściowy. Pomożecie?:) #include <iostream> #include <cstdio> int main() { do { std::cin.sync(); std::cin.clear(); std::cout << "podaj liczbe" << std::endl; int liczba; std::cin >> liczba; if( std::cin.fail() == 1 ) std::cout << "BLAD" << std::endl; else std::cout << "oto twoja liczba: " << liczba << std::endl; } while( std::cin.fail() == 1 ); return 0; } |
|
jsc |
» 2012-02-03 17:58:47 Chyba dosyć tworzenia tych samych tematów. |
|
Kelemes Temat założony przez niniejszego użytkownika |
» 2012-02-03 18:00:20 Przeczytałem wiele z nich i wskazówki z żadnego mi nie pomogły. Chyba, że całkiem bym zmienił mój pomysł |
|
Hoop300 |
» 2012-02-03 18:17:28 po co ci ten fragmęt "#include <cstdio>??? wywal to zamien miejscami cin.clear(); cin.sync(); i nie wiem po co " == 1" po cin.fail() a na koncu powinno byc !cin.good() a nie fail() |
|
Kelemes Temat założony przez niniejszego użytkownika |
» 2012-02-03 23:20:33 kurcze, zamienione dwa wyrazy, których kolejność wydawała mi się obojętna :D bardzo dziękuję. Tylko jeszcze jedno pytanie zamienienie fail na !good jakie ma znaczenie? usprawnia kod czy to tak się po prostu utarło? |
|
DejaVu |
» 2012-02-04 00:09:19 W zasadzie to:
if( !cin.good() == cin.fail() )
Powyższy fragment kodu zawsze zwraca prawdę bo to jest w praktyce to samo ;p |
|
Hoop300 |
» 2012-02-04 00:10:50 tak na prawde to chyba nie ma znaczenia chyba gdzies zobaczyłem !cin.good i tak jakos napisałem |
|
Elaine |
» 2012-02-04 14:33:42 W zasadzie to:
if( !cin.good() == cin.fail() )
Powyższy fragment kodu zawsze zwraca prawdę bo to jest w praktyce to samo ;p |
To nie jest to samo, lewa strona to true , jeśli ustawiony jest tylko eofbit , prawa w tym samym wypadku wynosić będzie false . |
|
« 1 » 2 |