Proste sprawdzanie poprawności wprowadzanych danych
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Proste sprawdzanie poprawności wprowadzanych danych

AutorWiadomość
Temat założony przez niniejszego użytkownika
Proste sprawdzanie poprawności wprowadzanych danych
» 2017-01-20 15:09:38
Cześć. Mam problem z bardzo prostym warunkiem, nie mam pojęcia czemu mi go spełnia liczba, która nie powinna go spełniać...

C/C++
cin >> opcja;
while( opcja != 1 || opcja != 2 || cin.fail() )
{
    cout << "Prosze wybrac poprawna opcje.\n";
    cin.clear();
    cin.ignore( 1000, '\n' );
    cin >> opcja;
}

Wpisując 1 lub 2 program wchodzi w pętlę while i nie chce z niej wyjść. Jeśli zamiast while dam if, program też wejdzie w pętlę (wyskoczy komunikat), ale po drugim podaniu 1 lub 2, program  przechodzi dalej...
Dlaczego wchodzi w pętlę, skoro warunek nie jest spełniony?
P-156705
Temat założony przez niniejszego użytkownika
» 2017-01-20 15:20:12
Po zmianie warunków na (opcja < 1 || opcja > 2) zaczęło normalnie działać, co jest fajną zagadką... Dlaczego poprzednio nie działało, a w tym przypadku działa?
P-156706
» 2017-01-20 15:42:58
opcja != 1 || opcja != 2
1 != 1 || 1 != 2
false || true
true
2 != 1 || 2 != 2
true || false
true
opcja != 1 && opcja != 2
1 != 1 && 1 != 2
false && true
false
2 != 1 && 2 != 2
true && false
false
( opcja < 1 || opcja > 2 )
1 < 1 || 1 > 2
false || false
false
2 < 1 || 2 > 2
false || false
false
Rozumiesz?
P-156707
Temat założony przez niniejszego użytkownika
» 2017-01-20 15:50:46
Bardzo eleganckie wytłumaczenie. Czaję, dzięki.
P-156708
« 1 »
 Strona 1 z 1