3

我必须编写一个程序来循环抛硬币。支持我在控制台中输入一个数字并让它运行多次抛硬币的循环。我需要使用嵌套循环。我已经为此工作了几个小时,但无法使其工作。

控制台 i/o 应该如下所示:
输入要执行的投掷次数 [0=exit]: 3 Heads Tails Heads

输入要执行的投掷次数 [0=exit]: 2 Tails Tails

输入要执行的投掷次数[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 回答