2016-12-01 3 views
-2

私は家族のフェッドタイプのゲームをコーディングしようとしています。繰り返し回答を止める方法を知りたいのですが?このコードのように私は "バグ"を書くことができ、ループはちょうど続くでしょう。これで回答を繰り返すのをやめますか?

void f() 
{ 
    int y=0; 
    string q[17]; 
    string ans1[4]; 
    ans1[0]= "bears"; 
    ans1[1]="bugs"; 
    ans1[2]= "snakes"; 
    ans1[3]="skunks"; 
    string ans; 
    int sum=0; 
    q[0]="Name something you try to avoid when camping in the woods."; 
    cout << q[0] << endl; 
    for (int a=0; a<7; a++) 
    { 
     int b; 
     getline(cin,ans); 
     if (ans==ans1[0]||ans==ans1[1]||ans==ans1[2]||ans==ans1[3]) 
     { 
      if (ans==ans1[0]) 
      { 
       b=42; 
      cout << "SURVEY SAYS " << b << "! Good Job! " << endl; sum=sum+b; 
      } 
      else if (ans==ans1[1]) 
      { 
       b=33; 
      cout << "SURVEY SAYS " << b << "! Nice one man! " << endl; sum=sum+b; 
      } 
      else if (ans==ans1[2]) 
      { 
       b=20; 
      cout <<"SURVEY SAYS " << b << "! Fantastic man!"<< endl; sum=sum+b; 
      } 

      else if (ans==ans1[3]) 
       { 
        b=5; 
        cout << "SURVEY SAYS " << b << "! You Got it!" << endl; sum=sum+b; 
       } 
     } 
     else if (ans!=ans1[0]&&ans!=ans1[1]&&ans!=ans1[2]&&ans!=ans1[3]) 
     { 
       cout << "YOU GOT THIS ONE WRONG! "<< endl; y++; 
     if (y==3) { cout << "LOOOOSER" << endl; break;} 
     } 
    } 
    cout << " your total score for 

このラウンドは「< <合計< <てendlです。 }

+0

あなたの回答を「まだ推測されていない有効な回答」のリストと考える場合、有効な回答が推測されるときにはリストから削除する必要があります。各回答をコンテナ(ジャック毎のベクトル)に入れて、推測されたそれぞれの回答を取り除くか、または何らかの形でそれぞれの推測された回答をマークし、それを再びテストしない。正解のテストは正解のリストをループします。既存のテストはうまく動作しません。別のポイント: 'else if'テストは役に立たない:外側のifテストは答えが正しいかどうかを調べる。このテストが失敗した場合、elseは真でなければならないので、!=テストのすべてを行う必要はありません – ryonts

答えて

1

あなたはすべて受け入れ答えの(私はstd::vectorをお勧めします)のリストを維持する必要があるだろうし、A与えられたとき。新しい回答、それがリストにないことを確認する必要があります。

また、回答ごとに回答が与えられたときに確認する変数はwasUsedです。

関連する問題