我正在尝试模拟一个会掷骰子的程序,它将生成结果,直到变量相等为止,但是我无法弄清楚。
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main() {
const int MIN_VALUE = 1;
const int MAX_VALUE = 6;
int die1,die2;
unsigned seed = time(0);
srand(seed);
die1 = (rand()%(MAX_VALUE - MIN_VALUE +1)) + MIN_VALUE;
die2 = (rand()%(MAX_VALUE - MIN_VALUE +1)) + MIN_VALUE;
while(die1 == die2); {
die1 = (rand()%(MAX_VALUE - MIN_VALUE +1)) + MIN_VALUE;
die2 = (rand()%(MAX_VALUE - MIN_VALUE +1)) + MIN_VALUE;
cout<<"Value of die 1 is"<<die1<<endl;
cout<<"Value of die 2 is" <<die2<<endl;
cout<<endl;
}
return 0;
}
最佳答案
while(die1 == die2);
中有两个错误。==
使循环在值相等时继续进行,但您需要相反。
如果两个骰子开始相等,则条件可能是无限的(因为重新滚动从未发生,请参见下文)。
否则它将是“从不”。
分号将防止while
对以下{}
产生任何影响,如果循环不是无限的,则分号将只执行一次,否则就永远不会执行。
因此更改为:
while(die1 != die2)
{
/* reroll */
}
如果您想使代码更易于维护和阅读,请研究
do {} while();
。