[C/C++] Problem bei Menü mit While-Schleife

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Beogradjanin, 19. Januar 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 19. Januar 2008
    Problem bei Menü mit While-Schleife

    Code:
    
    (...)
    
     int iMenue;
    
     cout << " Menue\n"
     << " ------\n"
     << " 1) Codieren\n"
     << " 2) Decodieren \n\n"
     << " Waehlen Sie: ";
    
     cin >> iMenue;
     
     while ((iMenue!=1) || (iMenue!=2))
     {
     cout << "\n Falsche Eingabe! Waehlen Sie zw. 1) Codieren und 2) Decodieren: ";
     cin >> iMenue;
     }
    
    (...)
    
    
    Wieso kommt der bei mir, egal ob ich 1, 2 oder sonstwas eingebe, IMMER in die Schleife?? Hätte das Problem auch mit einer Do-While Schleife lösen können, aber immerhin muss es doch auch mit ner While-Schleife funktionieren?!

    ich würde ungern "goto" verwenden.


    Danke im Voraus!
     
  2. 19. Januar 2008
    AW: Problem bei Menü mit While-Schleife

    while ((iMenue!=1) || (iMenue!=2))

    muss umgeändert werden in

    while ((iMenue!=1) && (iMenue!=2))
     
  3. 19. Januar 2008
    AW: Problem bei Menü mit While-Schleife

    hm ok, es läuft, aber wieso funktioniert es nicht mit "oder"?

    es heißt ja, wenn iMenue ungleich 1 ODER ungleich 2 dann schleife

    so heißt es ja: wenn iMenue ungleich 1 UND ungleich 2 dann schleife.

    bw ist raus
     
  4. 19. Januar 2008
    AW: Problem bei Menü mit While-Schleife

    willst nicht lieber swich-case anstatt while nehmen? passt doch für ne auswahl viel besser?!

    MfG
    Bernie
     
  5. 19. Januar 2008
    AW: Problem bei Menü mit While-Schleife

    hatte es jetzt mit ner while-schleife gemacht.

    wie kann ich denn bei einer SWITCH Anweisung z.b. einen Abschnitt wiederholen??

    Also z.b.

    Wenn case 1 und case 2 nicht erfüllt, kommt er ja in den default block. und wenn ich nun anstatt 1 oder 2 eine 3 eingebe, werden ja beide case-anweisungen nicht erfüllt, also müsste er ja das ganze nochmal abfragen, nur wie?

    switch(iMenue)
    {
    case 1: Codierung(); break;
    case 2: Decodierung(); break;
    default: cout << " Waehlen Sie: "; cin >> iMenue; switch(iMenue);
    }

    so klappt es ja leider nur einmal, und ob es richtig ist nochmal ein switch(iMenue) einzufügen, bezweifel ich.
     
  6. 19. Januar 2008
    AW: Problem bei Menü mit While-Schleife

    Er will aber, dass die Auswahl solange kommt, bis der Benutzer eine gültige Eingabe macht.


    Bei "oder" wäre es so:

    Benutzer gibt 1 ein -> Compiler: iMenue != 1 (false), iMenue != 2 (true)
    Benutzer gibt 2 ein -> Compiler: iMenue != 1 (true), iMenue != 2 (false)

    Eine Teilbedingung ist also immer true, egal, welche Eingabe der Benutzer macht. Und da eine Bedingung mit "oder" immer dann true ist, wenn eine Teilbedingung true ist, ist die ganze Bedingung in deinem Fall immer true und die Schleife wird immer ausgeführt.


    Das ginge mit goto, ist aber keine gute bzw. saubere Lösung, verwende lieber Schleifen.
     
  7. 19. Januar 2008
    AW: Problem bei Menü mit While-Schleife

    @Gibbon:

    vielen dank! bw ist raus, probleme gelöst

    ~closed~
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.