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

Problem z while(!(cin>>zmienna))

Ostatnio zmodyfikowano 2016-02-28 23:14
Autor Wiadomość
urdnotnanna
Temat założony przez niniejszego użytkownika
Problem z while(!(cin>>zmienna))
» 2016-02-28 20:46:16
Hej, mam taki problem, ze probuje zabezpieczyc moj program przed wpisaniem czegos innego niz liczby. I wszystko niby pieknie dziala, zabezpiecza, ale jednak jak wpisuje poprawna wartosc, to program ja ignoruje i czeka az wpisze jeszcze raz (jak wpisuje po raz drugi, to juz dziala).

C/C++
cin >> a;
cin.get();

while( !( cin >> a ) )
{
    cin.ignore( numeric_limits < streamsize >::max(), '\n' );
    cout << "Nieprawidlowa data! Wpisz ponownie" << endl; //zabezpieczenie przed nieprawidlowymi danymi
    cout << "Wpisz: " << endl << "b)date wydania: ";
    cin.clear();
    cin.sync();
    cin >> a;
    cin.get();
}

Siedze nad tym od godziny, wszystkiego chyba probowalam i nic :(
P-145395
Gibas11
» 2016-02-28 21:22:36
C/C++
cin >> a; //<- pobierasz dane pierwszy raz
cin.get();

while( !( cin >> a ) ) //<- Niezależnie od poprawności pierwszych danych znowu je wczytujesz.
{
    cin.ignore( numeric_limits < streamsize >::max(), '\n' );
    cout << "Nieprawidlowa data! Wpisz ponownie" << endl;
    cout << "Wpisz: " << endl << "b)date wydania: ";
    cin.clear();
    cin.sync();
    cin >> a;
    cin.get();
}
P-145397
urdnotnanna
Temat założony przez niniejszego użytkownika
» 2016-02-28 22:27:38
jest jakis sposob jak to poprawic?
P-145398
carlosmay
» 2016-02-28 23:14:51
jest jakis sposob jak to poprawic?
Pomyśleć.

C/C++
while( !( std::cin >> zmienna ) ) { // tutaj wczytywana jest zmienna, nigdzie wiecej nie trzeba
    // ... czyszczenie strumienia
}
P-145399
« 1 »
  Strona 1 z 1