[C++] Błędne działanie pętli do...while
Ostatnio zmodyfikowano 2012-11-22 16:26
Hikamare Temat założony przez niniejszego użytkownika |
[C++] Błędne działanie pętli do...while » 2012-11-22 00:54:29 Poddaję się - siedzę nad tym już od godziny, próbuję cały czas zmieniać kod, ale to nic nie daje - czy ktoś może mi powiedzieć co jest nie tak w tym kodzie ? #include <iostream> #include <cstdio> using namespace std;
int main() { int wzrost = 0; int waga = 0; bool cm = 0; bool kg = 0; cout << "Podaj swoj wzrost (w cm) : "; do { cin.clear(); cin.sync(); cin >> wzrost; cout << endl << wzrost << " " << cm; if( wzrost == cin.fail() ) { cout << "Podaj wartosc liczbowa!" << endl; cm == 0; } else if( wzrost <= 100 ) { cout << "Nie jestes taki niski!" << endl; cm == 0; } else if( wzrost >= 250 ) { cout << "Nie jestes az tak wysoki!" << endl; cm == 0; } else { cm == 1; } } while( cm = 0 ); return 0; }
Nawet po wpisaniu wartości 250 i tak wyskakuje komunikat "Nie jesteś taki niski!" |
|
DejaVu |
» 2012-11-22 01:22:29 Spróbuj napisać program od zera i pomiń cały kod związany z poprawnym wczytywaniem danych. Opisany problem nie leży bowiem w pętli while. |
|
Mrovqa |
» 2012-11-22 08:24:27 @Hikmare operator porównania i przypisania to nie jest to samo. Dodam, iż błędy masz w wielu miejscach. |
|
wojownik266 |
» 2012-11-22 08:49:52 Poniżej nieco poprawiony kod programu. #include <iostream> #include <cstdio> using namespace std;
int main() { int wzrost = 0; int waga = 0; bool cm = 0; bool kg = 0; cout << "Podaj swoj wzrost (w cm) : "; do { cin.clear(); cin.sync(); cin >> wzrost; cout << endl << wzrost << " " << cm; if( wzrost == cin.fail() ) { cout << "Podaj wartosc liczbowa!" << endl; cm = 0; } else if( wzrost <= 100 ) { cout << "Nie jestes taki niski!" << endl; cm = 0; } else if( wzrost >= 250 ) { cout << "Nie jestes az tak wysoki!" << endl; cm = 0; } else { cm = 1; } } while( cm = 0 ); return 0; }
|
|
Mrovqa |
» 2012-11-22 09:30:15 @wojownik266 jeżeli ten błąd, który razi w oczy popełniłeś specjalnie, to przynajmniej byś zaznaczył, że to lekka pomoc, ale kod jest nadal w części błędny - unikniemy kolejnych pytań, dlaczego nie działa. |
|
Hikamare Temat założony przez niniejszego użytkownika |
» 2012-11-22 16:15:40 Najdziwniejsze jest to, że teraz niby wszystko działa, jednak wystarczy np. raz podać za wysoką wartość, a później ją ponowić i program nie wykonuje pętli ponownie. Poddaję się, nie wiem, co może być nie tak. do { if( wzrost <= 100 ) { cout << "Nie jestes taki niski!" << endl; cin.clear(); cin.sync(); cin >> wzrost; cm = 0; } else if( wzrost >= 250 ) { cout << "Nie jestes az tak wysoki!" << endl; cin.clear(); cin.sync(); cin >> wzrost; cm = 0; } else { cm = 1; } } while( cm = 0 );
|
|
SeaMonster131 |
» 2012-11-22 16:22:19 Zapamiętaj: == to operator porównania (np. if( a == b ) ) = to operator przypisania (np. int a = b; ) |
|
Hikamare Temat założony przez niniejszego użytkownika |
» 2012-11-22 16:26:01 oO' błąd tak trywialny, że aż wstyd się do niego przyznawać. |
|
« 1 » |