Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

pętla do...while. problem (zadanie domowe z kursu)

Ostatnio zmodyfikowano 2013-09-05 10:51
Autor Wiadomość
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:
C/C++
#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.
P-91550
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).
P-91551
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ę ;)
P-91554
« 1 »
  Strona 1 z 1