[c++] Jak poprawnie porownywać zmienne typu char w warunku pętli do...while?
Ostatnio zmodyfikowano 2015-01-01 18:40
radek04 Temat założony przez niniejszego użytkownika |
[c++] Jak poprawnie porownywać zmienne typu char w warunku pętli do...while? » 2015-01-01 18:10:59 Bez większego opisywania. Działa np. takie coś: char wybor; do { cin >> wybor; } while( wybor != 'a' );
natomiast nie działa: char wybor; do { cin >> wybor; } while( wybor != 'a' || wybor != 'b' );
W tym drugim przypadku, niezależnie od wartości zmiennej, pętla zawsze się wykonuje (jakby nie wykrywało, że wartość zmiennej to np. 'b'). Pytanie: dlaczego drugi wariant nie działa? I jak mogę przerobić tę część programu, by działała? Jednak nie chciałbym wykorzystywać do tego innych sposobów (np. switch...case). Czy da się to zrobić przy do...while? |
|
1aam2am1 |
» 2015-01-01 18:19:28 II Działa dopóki wybór jest różny od 'a' lub różny od 'b' To jest zawsze spełnione |
|
radek04 Temat założony przez niniejszego użytkownika |
» 2015-01-01 18:26:09 Tak, ale działa nawet, jeśli wybór jest równy np. 'b'. A chyba wtedy powinien przerwać pętlę, prawda? |
|
Monika90 |
» 2015-01-01 18:29:45 Pętla będzie przerwana jeżeli warunek (wybor != 'a' || wybor != 'b') będzie fałszywy, (czyli nigdy, bo zawsze jest prawdziwy) |
|
radek04 Temat założony przez niniejszego użytkownika |
» 2015-01-01 18:32:25 Chcę, by przerwało pętlę, jeśli wybór będzie wynosił 'a' lub 'b'. Czy dobrze zrobiłem (a raczej co źle zrobiłem)? |
|
Monika90 |
» 2015-01-01 18:34:57 No to wystarczy, że dasz warunek, który będzie fałszywy gdy wybor jest równy a lub równy b |
|
radek04 Temat założony przez niniejszego użytkownika |
» 2015-01-01 18:40:20 Chyba nie rozumiem. Przecież dałem "!=", więc ma przerwać pętlę, jeśli zmienna przyjmie wartość 'a', lub przyjmie wartość 'b'. Albo odwrotnie: pętla ma się wykonywać, dopóki zmienna jest różna od 'a', lub różna od 'b'.
Proszę napisać, co mam źle.
Edit: Zamieniłem || na && i chyba działa. Coś logika u mnie zaszwankowała :) |
|
« 1 » |