Pętla do...while
Ostatnio zmodyfikowano 2011-07-15 11:41
Arczi_RoX Temat założony przez niniejszego użytkownika |
Pętla do...while » 2011-07-14 15:47:42 Witam. Potrzebuję pomocy w związku z tematem Pętla do...while. Konkretnie chodzi mi o zadanie domowe: Zadanie domowe Napisz program, który wczyta liczbę, a następnie wypisze ją na ekranie. Zabezpiecz przed wczytaniem nieprawidłowej liczby. Wykorzystaj do tego celu wiedzę z jednego z poprzednich rozdziałów. Sposób działania programu: 1. Podaj liczbę 2. Jeżeli błąd, wróć do kroku 1. 3. Wypisz liczbę, która została podana. Podaję mój kod który napisałem: #include <iostream> using namespace std; int main() { int liczba; do { cout << "Podaj liczbe: " << endl; cin >> liczba; } while( !cin.good() ); cout << "Podana liczba: " << liczba << endl; cout << "Koniec." << endl; return 0; }
No i teraz: Jeżeli podam poprawną liczbę przejdzie do końca programu i wypisze ją ale jeżeli podam np. literę zamiast cyfry to cały czas wypisuje "Podaj liczbę:". Bardzo prosiłbym o pomoc i wyjaśnienie dlaczego tak jest. |
|
murek |
» 2011-07-14 16:00:51 cin.clear(); cin.sync();
co do wyjasnienia. przy wpisywaniu wciskasz tak na prawde dwa znaki - liczbe i znak \n - enter. dzieki cin.clear(); cin.sync(); 'usuwasz' wlasnie tego entera. chyba w kursie powinno byc wyjasnione to, poczytaj dokladnie - to tak lopatologicznie ;] |
|
Arczi_RoX Temat założony przez niniejszego użytkownika |
» 2011-07-14 16:11:18 Dziękuję za pomoc. Dokładnie o to chodziło. Musiałem to przeoczyć, ale cóż dopiero zaczynam :P Prawidłowy kod więc wygląda tak: #include <iostream> using namespace std; int main() { float liczba; do { cout << "Podaj liczbe: " << endl; cin >> liczba; cin.clear(); cin.sync(); } while( liczba == cin.fail() ); cout << "Podana liczba: " << liczba << endl; cout << "Koniec." << endl; return 0; }
Jeszcze raz dzięki za pomoc :) |
|
malan |
» 2011-07-14 18:20:31 Ten kod nie jest prawidłowy ;) |
|
Dark |
» 2011-07-15 11:26:26 Prawidłowy kod to ten #include <iostream> using namespace std; int main() { bool stan; float liczba; do { cout << "Podaj liczbe: " << endl; cin >> liczba; stan = cin.fail(); cin.clear(); cin.sync(); } while( stan ); cout << "Podana liczba: " << liczba << endl; cout << "Koniec." << endl; return 0; } @edit teraz działa prawidłowo |
|
SeaMonster131 |
» 2011-07-15 11:41:13 @up: Jesteś taki pewien? Skompiluj sobie ten kod... :P do { cin.clear(); cin.sync(); cout << "Podaj liczbe: " << endl; cin >> liczba; } while( cin.fail() ); Albo do { cin.clear(); cin.sync(); cout << "Podaj liczbe: " << endl; cin >> liczba; } while( !cin.good() ); |
|
« 1 » |