pętla do...while. problem (zadanie domowe z kursu)
Ostatnio zmodyfikowano 2013-09-05 10:51
Micks96 Temat założony przez niniejszego użytkownika |
pętla do...while. problem (zadanie domowe z kursu) » 2013-09-04 23:56:41 Witam, Przechodzę kurs, zaczynam poziom 2. nie wychodzi mi zadanie domowe nr. 1. "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. " Napisałem taki kod: #include <iostream> using namespace std;
int main() { int a; bool c; cout << "podaj liczbe" << endl; do { cout << "liczba: " << endl; cin >> a; c = cin.good(); cin.ignore(); cin.sync(); } while( c == 0 ); cout << "==" << a << "==" << endl; return 0; }
Jak wpisze liczbę, to działa dobrze, a gdy wpiszę np. t ,to wariuje. Próbowałem cin.ignore i cin.sync wstawiac przed wpisaniem a, próbowalem bez cout<<"liczba". i kilka podobnych rzeczy. Po wpisaniu nie-liczby program albo ciagle wypisuje "liczba:" albo powtarza cin>>a tylko raz, albo wogóle. powiedzcie, gdzie jest bład ? PS. Podobny temat był na forum, lecz nie zostało wyjaśnione w czym dokładnie jest problem. |
|
Mitu |
» 2013-09-05 02:31:34 Musisz wyczyścić flagi błędów, użyj cin.clear(), poza tym cin.ignore lub cin.sync, a nie oba naraz (sprawdź jaka jest różnica między nimi, dają różne efekty). |
|
Micks96 Temat założony przez niniejszego użytkownika |
» 2013-09-05 10:51:37 Dzięki wielkie;) Widocznie przeoczyłem cin.clear. Wrócę ze szkoły to naprawię ;) |
|
« 1 » |