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.. 😃


Anmelden zum Antworten