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

[c++] Jak poprawnie porownywać zmienne typu char w warunku pętli do...while?

Ostatnio zmodyfikowano 2015-01-01 18:40
Autor Wiadomość
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ś:
C/C++
char wybor;
do
{
    cin >> wybor;
} while( wybor != 'a' );

natomiast nie działa:
C/C++
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?
P-123796
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
P-123797
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?
P-123798
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)
P-123799
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)?
P-123801
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
P-123802
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 :)
P-123803
« 1 »
  Strona 1 z 1