Do...While abfrage
-
Moin.
Hab mir ein Programm geschrieben was einfach per Switch/Case eingaben vom Benutzer auswerten soll...
Es ist aufgebaut wie ein Menue
(S)piel Starten (L)aden (O)ptionen (B)eenden
Jetzt soll natürlich das Programm beendet werden sobald der Benutzer b oder B eingibt.
Mein Quelltext:
#include <iostream> using namespace std; int main() { char chAbfrage = 0; .....Text ausgabe switch(chAbfrage) { case ('S') { ..... } break; usw. case ('B') { cout << "Spiel wird beendet!" << endl; // Gibbetz hier noch eine // andere Möglichkeit ´ // anstatt 2 mal eine Case // Abfrage zu machen? } break; case ('b') { cout << "Spiel wird beendet!" << endl; } break; } while ( (chAbfrage != 'b') || (chAbfrage != 'B') ) }Naja und das Hauptproblem ist, dass das Prog nicht beendet sondern immer in der Schleife bleibt... Wenn ich
while (chAbfrage != 'b')dann gehts...
-
Gibbetz hier noch eine
andere Möglichkeit
anstatt 2 mal eine Case
Abfrage zu machen?ja, toupper() bzw tolower(), dann kannste dir jeweils eins der case's sparen.
-
Hallo,
dein Problem liegt hier denke ich im Bereich der mathematischen Logik, in deiner while-Abfrage steht ausformuliert in etwa drin mach das solange chABfrage nicht b oder nicht B ist, das heißt wenn du jetzt ein großes B eingibst, dann ist die Bedingung trotzdem wahr, weil der andere Teil erfüllt ist, nämlich das chAbfrage nicht b ist. Die Lösung des Problems liegt darin anstelle der || && zu schreiben.MfG
-
switch (irgendwas) { case 'B': case 'b': cout << "Spiel wird beendet!" << endl; break; }
-
aber sowohl im switch abzufragen als auch im do, ist doppelt gemoppelt.
besser ist eine "endlosschleife" for(;;) und im case 'b' ein return.
-
Oder er lässt die case-Anweisungen für B und b einfachweg und schreibt das
cout << "Spiel wird beendet!" << endl;hinter die Schleife.
MfG
-
Danke für die ganzen Antworten... Hab jetzt || gegen && getauscht und es klappt... War irgendwie nen Denkfehler von mir..
