Zabezpieczenie programu przed wprowadzaniem nieprawidłowych danych
Ostatnio zmodyfikowano 2014-12-03 20:33
ronek22 Temat założony przez niniejszego użytkownika |
Zabezpieczenie programu przed wprowadzaniem nieprawidłowych danych » 2014-12-03 19:58:57 Witam, Mam niewielki problem, otóż szukałem sposobu na zabezpieczenie programu przed nieprawidłowymi danymi. Niby wszystko chodzi, ale przy wyjściu z pętli program nie realizuje następujących po niej poleceń? Nie wiem, dlaczego tak się dzieje. #include <iostream> using namespace std;
int main() { int a; cout << "Wprowadz liczbe a: "; while( true ) { cin >> a; if( cin.fail() ) { cout << "Wprowdz liczbe a, jeszcze raz: "; cin.clear(); cin.sync(); } } cout << endl << a; return 0; } Pozdrawiam |
|
Jacob99 |
» 2014-12-03 20:11:38 Nie wychodzisz z pętli, bo jest to pętla nieskończona. Jeśli nie wpiszesz cyfry, to wykona się if w pętli, a jeśli wpiszesz poprawną liczbę, to wykonuje się następny przebieg pętli. |
|
ronek22 Temat założony przez niniejszego użytkownika |
» 2014-12-03 20:33:17 Zmieniłem warunek pętli na while(!a), teraz wszystko chodzi, oprócz jednego przypadku. Jeśli wprowadzimy najpierw liczbe, a za nią cyfrę to program nas przepuszcza np. 3bb --> a = 3. Nie wiem jak się z tym uporać. Można też zostawić warunek w pętli (true) i po prostu po warunku if, dać jeszcze else break, ale zostaje ten sam problem co wcześniej.
@Edit Wychodzi na to, że cin.fail() dla warotsci 3bb, daje false, także to wina tej funkcji, ale w takim razie co innego można użyć? |
|
« 1 » |