3

コイントスのループを実行するプログラムを作成する必要があります。コンソールに数字を入力して、その数だけコイントスのループを実行させることがサポートされています。ネストされたループを使用する必要があります。私はこれに何時間も取り組んできましたが、うまくいきません。

コンソールの I/O は次のようになります:
Enter the number of tosses to perform [0=exit]: 3 Heads Tails Heads

実行するトスの数を入力してください [0=終了]: 2 テール テール

実行するトスの数を入力してください [0=終了]: 0

これは私がこれまで持っているコードです:

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

int main ()
{
  srand(time(0));rand(); 
  int result = rand() % 2;
  while (true)
  {
    int n; // this many tosses
    cout << "How many tosses";
    cin >> n;
    cin.ignore (1000, 10);
    if (n == 0)
      break;

    for (int i = 0; i < n; i++)
    //random number generator
    {    
      if (result == 0)
        cout<< "Heads"<<endl;
      else if (result == 1)
        cout << "Tails"<<endl;
      else if (result != 0 || result !=1) 
        return 0;
    } //for 
  }//while
}//main
4

3 に答える 3

2

ループには、実際に実行しようforとしている部分がありません{}。ループしたい部分の周りに中括弧を追加してみて、問題が解決するかどうかを確認してください。

コードのインデントを編集して、実際にループする唯一の行 ( srand(time(0)))を表示しました。

于 2011-12-03T01:17:37.317 に答える
1
  1. ループブロックの周りにブラケットが必要です。つまり

    for( int i = 0; i < n; i++ )
    {
        // Code goes here
    }
    
  2. 上記のように、初期化する必要がありますi

  3. ループのrand()前にシードを入れます。while(...)

于 2011-12-03T01:21:05.567 に答える
0

ループint result = rand() % 2;内に移動する必要があります。forそうしないと、アプリケーションを再起動するまで、毎回同じ結果が得られます。

for (int i = 0; i < n; i++)
        //random number generator
{    
    int result = rand() % 2;
    if (result == 0)
         cout<< "Heads"<<endl; /* to make your output look like your example you should removed the <<endl from here */
    else if (result == 1)
        cout << "Tails"<<endl; /* and here */
    else if (result != 0 || result !=1) 

        return 0;
} //for 

/* and put it here */
cout << endl;
于 2011-12-03T01:41:10.077 に答える