Nieskończona pętla po wprowadzeniu złych danych

Nieskończona pętla po wprowadzeniu złych danych
Shadoow
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 42
0

Witam, podczas testowania natknąłem się na pewien problem. Po wpisaniu złej danej program zapętla się w nieskończoność. Próbowałem czyszczenie bufora, ale bezskutecznie. Proszę o jakieś wskazówki, gdyż na pewno rozwiązanie jest trywialne...

Kopiuj
#include <iostream>
#include <string>
using namespace std;

int main()
{
    int liczba;
    bool flaga = false;

    while (flaga == false) {
        cout << "Podaj liczbe: ";
        cin >> liczba;
        if (cin.good()) {
            cout << liczba;
            flaga = true;
        }
        else {
            cout << "Blad";
        }
    }
}
kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
2
Kopiuj
if(cin >> liczba){
	flaga = true;
	cout << liczba;
}else{
	cout << "Blad";
	cin.clear();
	cin.sync();
}

Przy okazji:

  1. http://4programmers.net/C/FAQ/Zabezpieczenie_przed_wpisywaniem_liter
  2. Popraw formatowanie. Jak sam nie umiesz to masz http://format.krzaq.cc/

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.