我必须编写一个程序来运行一个投掷硬币的循环。我被支持在控制台中输入一个数字,让它多次运行硬币投掷循环。我需要使用嵌套循环。我已经工作了好几个小时,但无法使它发挥作用。
控制台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
答案 0 :(得分:2)
您的for
循环没有您实际尝试在{}
内执行的部分。尝试在要循环的部分周围添加大括号,看看是否能为您修复它。
我在您的代码中编辑了缩进,以向您显示实际循环的唯一行(srand(time(0))
)
答案 1 :(得分:1)
你需要在循环块周围使用括号,即
for( int i = 0; i < n; i++ )
{
// Code goes here
}
如上所示,您需要初始化i
。
在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;