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

Zabezpieczenie programu przed wprowadzaniem nieprawidłowych danych

Ostatnio zmodyfikowano 2014-12-03 20:33
Autor Wiadomość
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.

C/C++
#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

P-122098
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.
P-122103
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ć?
P-122106
« 1 »
  Strona 1 z 1