2016-05-01 9 views
-3

私はC++でプログラムを書いています。ユーザがいくつかのオプションの中から選択して、それぞれのオプションが異なるようにしたいと思います。オプションの最後に、ユーザーがメニューから別のオプションを選択できるようにしたいが、ユーザーが最初にオプション3を選択した場合、ユーザーがメニューに戻ると、1または2を選択するとプログラムを終了する。コードを繰り返し実行するにはどうすればよいですか?コードで「while」ループを1つしか使用できないのはなぜですか?

#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

検索()'と '1しばらく()'ループあなたが期待されるかわからない –

+0

にそれを置く:どのくらいその美しい外観。ユーザーが '3'を入力したときに再びメニューを表示するコードは書かれていません。 –

+0

これはコードのほんの一部です。しかし、フィードバックいただきありがとうございます。 @LightnessRacesinOrbit – DZert

答えて

1

このような何かを行うための通常の方法は、while (true)ループにあなたの全体のコードを配置し、ユーザーが終了することを選択したときから抜け出す、そうのようなことです:

#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私も認識できない入力のテストを追加しました EDIT構文が好きな人は、switch文を使用することができます(本当に必要な場合を除いて、落書きがないことを確認してください) (注:両方のコードは同等ですaこれを行うにはNDおそらく)同じアセンブリを生成します

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

"switch"ステートメントについて聞いたことがありますか? –

+1

@SamVarshavchikはい、私はそれらを使用しない傾向があり、私は確かに(潜在的に)初心者のプログラマーにそれらを示唆しません。 'else if'ステートメントのセットは理解しやすく、構文も素敵です。 – Isaac

+1

@SamVarshavchik: "shush"について聞いたことがありますか? –

0

空想方法switch()を使用して、ここでWhy the switch statement and not if-else?switch()は、あなたのプログラムは非常に長いネストされた場合-else文を持つのを取り除くことができますされています。スイッチ `ため

#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

"非常に長いネストされたif-elseステートメント_ [sic] _"の代わりに、非常に長いネストされたswitchステートメントとその中にすべての奇妙な理由があります。エース。 –

+0

@light私は夜に 'switch()'を夢見ています。私は30スイッチのステートメントを取ると3つのif-elseステートメントよりも理解しています。 –

+0

あなた自身にあなたのフェチを保管してください。あなたは今、「教師」の立場にあり、ある責任を負っています! –

関連する問題