2017-09-05 22 views
-2

私は返信を要求するプログラムを作成していて、何回返信して表示したいのですか?私はプログラムでwhileループとswitch caseを使用しました。 しかし、std::cinの助けを借りて変数aに入力を保存すると、同じ入力がスイッチケースで受信されません。どんな助けもありがとうございます。スイッチケースでcinが入力されていない場合

#include <iostream> 

using namespace std; 

int a; 
int input; 
int i=1; 
void display() 
{ 
    cout << "Select a choice for reply" << endl; 
    cout << "1.Thank You" << endl; 
    cout << "2.Welcome" << endl; 
    cout << "3.Okay" << endl; 
} 

int main() 
{ 
    display(); 
    cout << "Enter Choice" << endl; 
    cin >> a; 
    input='a'; 
    switch (input) 
    { 
     case '1': { 
      int x; 
      cout << "Enter no. of times you want to print reply line" << endl; 
      cin >> x; 
      while (i <= x) 
      { 
       cout << "Thank you" << endl; 
      } 

      break; 
     } 
     case '2': { 
      int x; 
      cout << "Enter no. of times you want to print line" << endl; 
      cin >> x; 
      while (i <= x) 
      { 
       cout << "Welcome" << endl; 
      } 

      break; 
     } 
     case '3': { 
      int x; 
      cout << "Enter no. of times you want to print line" << endl; 
      cin >> x; 
      while (i <= x) 
      { 
       cout << "okay" << endl; 
      } 

      break; 
     } 
     default: { 
      cout << "wrong choice" << endl; 
     } 

     cout << "Thank you for replying" << endl; 
    } 

    return 0; 
} 
+1

'case '1'' -um。あなたのために働く少しのチャンス。あなたが「ケース1」を試したとは思わない(つまり、文字リテラルは使用しない)。そして、あなたの次のwhileループで 'i'も' x'も変更されないので、最初の問題を修正しても、無限に回転することになります。私は*強く* [C + +の良い本を提案](https:// stackoverflow。com/questions/388242/the-definitive-c-book-guide-and-list)を参照してください。 – WhozCraig

+0

C++教科書のサンプルのように、コードを正しくフォーマットしてください。 –

+0

'input'を' integer'として宣言し、 'input = 'a''を代入しました。その後、 'switch(input)'を入れます。 – kiLLua

答えて

3

コア問題がある:

input = 'a' 

そして:あなたはおそらく欲しい

case '1': 

は次のとおりです。

input = a 

case 1: 

すべてのコンパイラが警告を投げている必要があります後。 しかし、なぜ値をコピーするのですか? はちょうどあなたのコードには多くの問題があり、実際に

switch(a) 

を行うが、私は他の人がこのことを詳しく説明してもらおう。あなたの問題は input='a';ある

+0

私はちょうどあなたの助けを感謝してコーディングを開始していただきありがとうございます –

0

、入力値が97になり、それはあなたがinput = (int)'a';

を書く場合は、なぜあなたは「」変数を宣言しているのと同じですか?
1)あなたは整数に文字を与えることを試みる::input = a;( 'なし:右あなたが直接変数を使用する必要があり、それを行うにはinput = 'a';
ちょうどあなたがあなたのコード内のいくつかの問題を持っている入力 cin >> input;

0
#include <iostream> 
using namespace std; 
int a; 
int input; 
int i=1; 
void display() 
{ 
    cout<<"Select a choice for reply"<<endl; 
    cout<<"1.Thank You"<<endl; 
    cout<<"2.Welcome"<<endl; 
    cout<<"3.Okay"<<endl; 
} 

int main() 
{ 
    display(); 
    cout<<"Enter Choice"<<endl; 
    cin>>a; 
    input=a; 
    switch(input) 
    { 
     case 1 : 
     { 
      int x; 
      cout<<"Enter no. of times you want to print reply 
      line<<endl; 
      cin>>x; 
      while(i<=x) 
      { 
       cout<<"Thank you"<<endl; 
       x--; 
      } 
      break; 
     } 
     case 2 : 
     { 
      int x; 
      cout<<"Enter no. of times you want to print line" <<endl; 
      cin>>x; 
      while(i<=x) 
      { 
       cout<<"Welcome"<<endl; 
       x--; 
      } 
      break; 
     } 
     case 3 : 
     { 
      int x; 
      cout<<"Enter no. of times you want to print line"<<endl; 
      cin>>x; 
      while(i<=x) 
      { 
       cout<<"okay"<<endl; 
       x--; 
      } 
      break; 
     } 
     default: 
     { 
      cout<<"wrong choice"<<endl; 
     } 
     cout<<"Thank you for replying"<<endl; 
    } 
    return 0; 
} 
+0

あなたの問題は入力= 'a';入力値は97になります、入力=(int) 'a'を書く場合と同じです; aとinputの2つの異なる変数を取るには十分です。しかし、これらの2つの変数を宣言して使用したので、私はあなたのプログラムからその変数を削除しませんでした。スイッチの中では常に整数の構文を覚えておいてください(case 1:)ここで、1はあなたが選択肢として提供する任意の数で置き換えることができます(case 'a' :):whileループでは、バツ - ;)。 –

0

を使用)

2)あなたのスイッチケースでは、 '1'、 '2'(char型)と比較されますが、inputは整数型です。これを試してみてください:
case 1:case 2:(なし)

3)あなたのwhileループで増減することはありません。停止しません。あなたのループのどこかにi++またはx--のようなものを試してみてください。

いくつかの発言:あなたは中括弧なしでスイッチケースを使用することができます
1)({}):

int a = 0; 
cin >> 1; 
switch(a) 
{ 
    case 1: 
     break; 
    case 2: 
     int tmp = 0; 
     cout<<"tmp: "<<tmp<<endl; 
     break; 
    default: 
     break; 
} 

2)グローバル変数を避けるようにしてください、彼らはほとんどの場合には不要と悪い習慣です。

cout << "Enter Choice" << endl; 
cin >> input; 
switch (input) 

4)最後に、私はあなたには、いくつかの良いC++の本を読むことをお勧めしませ少なくとも、それはそれ本当に価値がある:

3)あなたは、あなたの変数aを必要といけない、あなたは次のように、直接inputを使用することができます。 (Good books

関連する問題