Frage zur while Schleife
-
Hallo,
ich habe eine kurze Frage zur while Schleife. Ist es nicht möglich sowas zu schreiben:
char Frage = 'J'; while(Frage != 'J' || Frage != 'j') { // Eine Zahl eingeben, und fragen ob die Zahl richtig eingegeben wurde cin >> Frage; }Bei der eingabe von "Frage" kann ich eingeben was ich will, die Schleife wird nie abgebrochen.
Wenn ich es aber so versuche:char Frage = 'N'; while(Frage == 'N' || Frage == 'n') { // Eine Zahl eingeben, und fragen ob die Zahl richtig eingegeben wurde cin >> Frage; }oder so
char Frage = 'J'; while(Frage != 'J') { // Eine Zahl eingeben, und fragen ob die Zahl richtig eingegeben wurde cin >> Frage; }klappt es. Kann mir jemand sagen warum das so ist?
-
Unbekannt schrieb:
while(Frage != 'J' || Frage != 'j')Einer der beiden Teile der Bedingung ist auf jeden Fall wahr, egal welchen Wert "Frage" hat - und damit ist die Gesamtbedingung (oder)konstant true. Du solltest lieber den operator %% (und) verwenden.
-
Wenn jemand 'N' eingibt sollte die Schleife abbrechen; richtig?
Wenn 'J' eingeben wird ist zwar die erste Bedingung der Oder-Bedingung erfüllt aber nicht die zweite. Du müsstest 'Jj' gleichzeitig eingeben können.
Du solltest schreibenwhile(Frage != 'J' && Frage != 'j') { // Eine Zahl eingeben, und fragen ob die Zahl richtig eingegeben wurde cin >> Frage; }
-
Ich sehe, während ich meine Antwort formulierte (ich bin schon alt und nicht mehr der schnellste) hat CStoll die Antwort geliefert.

-
RR schrieb:
Wenn jemand 'N' eingibt sollte die Schleife abbrechen; richtig?
Nein, in der Schleife wird eine Zahl eingegeben und danach wird die eingegebene Zahl nochmal angezeigt und gefragt ob sie richtig eingegeben wurde. Wenn J oder j gedrückt wird, soll die Schleife beendet werden, wird N, n oder irgendwas anderes eingegeben soll man die Zahl nochmal eingeben können. Aber wie gesagt wenn ich es so schreibe
while(Frage != 'J' || Frage != 'j') { ...... }wird die Schleife wiederholt egal ob ich n, N, J, j oder sonstwas eingebe.
-
Bei 'J' ist zwar die erste Bedingung der Oder-Bedingung erfüllt, aber nicht die zweite 'j'. Die Bedingung ist immer false, solange nicht 'Jj' gleichzeitig eingeben werden könnte. Das Problem ist 'J' != 'j'.
-
Vielen dank für die Antworten, das hat mir sehr geholfen.