嵌套循环与C ++抛硬币

时间:2011-12-03 01:13:29

标签: c++ nested-loops coin-flipping

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

控制台i / o应该如下所示:
输入要执行的投掷次数[0 =退出]:3 元首 尾巴 头

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

3 个答案:

答案 0 :(得分:2)

您的for循环没有您实际尝试在{}内执行的部分。尝试在要循环的部分周围添加大括号,看看是否能为您修复它。

我在您的代码中编辑了缩进,以向您显示实际循环的唯一行(srand(time(0))

答案 1 :(得分:1)

  1. 你需要在循环块周围使用括号,即

    for( int i = 0; i < n; i++ )
    {
        // Code goes here
    }
    
  2. 如上所示,您需要初始化i

  3. rand()循环之前放置while(...)的种子。

答案 2 :(得分: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;