• 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
306 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 1,072 wizyt
pytanie zadane 7 maja 2019 w PHP przez Luna Cognita Dyskutant (8,130 p.)
0 głosów
1 odpowiedź 1,037 wizyt
pytanie zadane 15 maja 2018 w C i C++ przez qlucha Obywatel (1,790 p.)
0 głosów
2 odpowiedzi 393 wizyt
pytanie zadane 11 listopada 2018 w C i C++ przez jankowa1ski Gaduła (3,560 p.)

93,778 zapytań

142,736 odpowiedzi

323,388 komentarzy

63,382 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...