2016-05-01 8 views
-3

Ich schreibe ein Programm in C++, und ich möchte, dass der Benutzer zwischen ein paar Optionen wählen kann, und jede Option ist anders. Am Ende der Option möchte ich, dass der Benutzer eine andere Option aus einem Menü auswählen kann, aber wenn der Benutzer ursprünglich Option 3 auswählt, wenn der Benutzer zum Menü zurückkehrt, wenn er 1 oder 2 wählt beendet das Programm. Was kann ich tun, damit der Code sich selbst wiederholt?Warum kann ich nur eine "while" -Schleife in meinem Code verwenden?

#include <iostream> 
using namespace std; 

int main() { 
    int play; 
    cout << "What do you want to do now?" << endl; 
    cout << "Choose a number..." << endl; 
    cout << "1) Talk." << endl; 
    cout << "2) Vent." << endl; 
    cout << "3) Play a guessing game." << endl; 
    cout << "4) End." << endl; 
    cin >> play; 

    while (play == 1){ 
     //code here 
     cout << "What do you want to do now?" << endl; 
     cout << "Choose a number..." << endl; 
     cout << "1) Talk." << endl; 
     cout << "2) Vent." << endl; 
     cout << "3) Play a guessing game." << endl; 
     cout << "4) End." << endl; 
     cin >> play; 
    } 

    while (play == 2){ 
     //code goes here 
     cout << "What do you want to do now?" << endl; 
     cout << "Choose a number..." << endl; 
     cout << "1) Talk." << endl; 
     cout << "2) Vent." << endl; 
     cout << "3) Play a guessing game." << endl; 
     cout << "4) End." << endl; 
     cin >> play; 
    } 

    return 0; 
} 
+0

Suche nach 'Schalter()' und steckte es in eine 'while()' Schleife –

+0

nicht sicher, was Sie erwartet. Sie haben keinen Code geschrieben, um das Menü erneut anzuzeigen, wenn der Benutzer '3' eingegeben hat. –

+0

Es war nur ein kleiner Teil des Codes. Vielen Dank für das Feedback. @LightnessRacesinOrbit – DZert

Antwort

1

Der üblicher Weg, etwas zu tun, wie dies Ihren gesamten Code ist in einer while (true) Schleife zu setzen, und bricht aus, wenn der Benutzer, wie so verlassen wählt:

#include <iostream> 
using namespace std; 

int main() 
{ 
    int play; 
    while (true) 
    { 
     cout << "What do you want to do now?" << endl; 
     cout << "Choose a number..." << endl; 
     cout << "1) Talk." << endl; 
     cout << "2) Vent." << endl; 
     cout << "3) Play a guessing game." << endl; 
     cout << "4) End." << endl; 
     cin >> play; 

     if (play == 1) 
     { 
      // code for Talk... 
     } 
     else if (play == 2) 
     { 
      // code for Vent... 
     } 
     else if (play == 3) 
     { 
      // code for Play a guessing game.... 
     } 
     else if (play == 4) 
     { 
      // End 
      return 0; 
     } 
     else 
     { 
      std::cout << "Expected a number between 1 and 4" << std::endl; 
     } 
    } 
} 

EDIT Ich habe auch einen Test für nicht erkannte Eingabe hinzugefügt EDIT Sie können auch eine switch-Anweisung verwenden, wenn Sie die Syntax bevorzugen (stellen Sie sicher, Sie fallen nicht durch, wenn Sie es wirklich wollen) (Hinweis: beide Codes sind gleichwertig ein nd produzieren wahrscheinlich identisch Montage)

int main() 
{ 
    int play; 
    while (true) 
    { 
     cout << "What do you want to do now?" << endl; 
     cout << "Choose a number..." << endl; 
     cout << "1) Talk." << endl; 
     cout << "2) Vent." << endl; 
     cout << "3) Play a guessing game." << endl; 
     cout << "4) End." << endl; 
     cin >> play; 

    switch (play) 
    { 
    case 1: 
     // code for Talk... 
     break; 
    case 2: 
     // code for Vent... 
     break; 
    case 3: 
     // code for Play a guessing game.... 
     break; 
    case 4: 
     // End 
     return 0; 
    default: 
     std::cout << "Expected a number between 1 and 4" << std::endl; 
    } 
} 
+1

Haben Sie jemals von einer "switch" Aussage gehört? –

+1

@SamVarshavchik Ja, ich neige dazu, sie nicht zu benutzen, und ich würde sie sicherlich einem (potentiell) unerfahrenen Programmierer nicht empfehlen. Eine Menge von 'else if'-Anweisungen ist viel einfacher zu verstehen und hat eine nette Syntax. – Isaac

+1

@SamVarshavchik: Hast du jemals von "Shush" gehört? –

0

Ein fantastischer Weg, dies zu tun, ist switch() mit und hier ist Why the switch statement and not if-else? A switch() können Ihr Programm helfen, eine sehr lange verschachtelte if-else-Anweisungen loswerden müssen. Schauen Sie, wie viel schöner seine:

#include <iostream> 

int main() 
{ 
    int play = 0; 

    while (play != 4) 
    { 
     std::cout << "What do you want to do now?" << std::endl; 
     std::cout << "Choose a number..." << std::endl; 
     std::cout << "1) Talk." << std::endl; 
     std::cout << "2) Vent." << std::endl; 
     std::cout << "3) Play a guessing game." << std::endl; 
     std::cout << "4) End." << std::endl; 
     std::cin >> play; 

     switch (play) 
     { 
      case 1: // code for talk here 
       break; 
      case 2: // code for Vent 
       break; 
      case 3: // code for Play 
       break; 
      case 4: std::cout << "program will exits!"; 
     } 
    } 
    return 0; 
} 
+1

Also statt "eine sehr lange verschachtelte if-else Anweisungen _ [sic] _" haben Sie eine sehr lange geschachtelte switch-Anweisung und alle Kuriositäten darin, ohne Grund. As. –

+0

@light Ich träume nur von 'switch()' in der Nacht. Ich würde eine 30 switch-Anweisung nehmen und sie besser verstehen als drei if-else-Anweisungen. –

+0

Nun, bitte behalte deine Fetische für dich. Sie sind gerade in der Position eines "Lehrers" und haben eine gewisse Verantwortung! –