• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z walidacją danych wejściowych

0 głosów
237 wizyt
pytanie zadane 18 sierpnia 2016 w C i C++ przez navivix Nowicjusz (120 p.)

Witam
Próbuję dodać walidację danych wejściowych w swojej funkcji. Wygląda ona tak:

void Builder::get_choice(){
    choice = getch();
    if((choice != '1') || (choice != '2')){
        bool valid = false;
        while(valid != true){
            cout << "Nieprawidlowy wybor. Wybierz ponownie" << endl;
            choice = getch();
            if((choice == '1') || (choice == '2')) valid = true;
        }
    }
    cout << "Ok";
}

Otóż problem jest taki, że gdy na klawiaturze wcisnę "1" lub "2", to pętla zawarta w ifie się wykonuje. Dopiero po drugim wciśnięciu "1" lub "2" funkcja wyświetla "Ok". Dodam iż zmienna "choice" jest typem "char" w klasie "Builder", czyli tak jak powinno być. Jak rozwiązać ten problem?

1 odpowiedź

+1 głos
odpowiedź 18 sierpnia 2016 przez criss Mędrzec (172,570 p.)
(choice != '1') || (choice != '2')

Tutaj powinien być && zamiast ||

"Ok" wyświetli się zawsze. Bo funkcja zawsze dojdzie do momentu cout << "Ok";

komentarz 18 sierpnia 2016 przez navivix Nowicjusz (120 p.)
No rzeczywiście, działa. Dzięki wielkie :)

Podobne pytania

0 głosów
2 odpowiedzi 919 wizyt
pytanie zadane 7 maja 2019 w PHP przez Luna Cognita Dyskutant (8,130 p.)
0 głosów
1 odpowiedź 937 wizyt
pytanie zadane 15 maja 2018 w C i C++ przez qlucha Obywatel (1,790 p.)
0 głosów
2 odpowiedzi 305 wizyt
pytanie zadane 11 listopada 2018 w C i C++ przez jankowa1ski Gaduła (3,560 p.)

93,604 zapytań

142,529 odpowiedzi

322,996 komentarzy

63,092 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...