【发布时间】:2019-04-22 11:07:08
【问题描述】:
所以,我正在制作一个程序,您可以在其中将弹珠添加到袋子中。你选择你想要的颜色,然后是你想添加的弹珠数量,然后是那个颜色的弹珠是酷、无聊还是怪异。所以如果你想加10个蓝色弹珠,那么你就选择cool。您将总共有十个弹珠和十个蓝色和凉爽的弹珠。我从添加后已经存储的弹珠中取出随机弹珠。由于某种原因,它根本不起作用。我尝试获取一个随机数并将该随机数分配给已添加的当前弹珠的描述。假设生成的随机数为 1,它将删除“红色酷弹珠”。我显然无法删除尚未添加的弹珠,因此我添加了一个do - while 循环,该循环基本上循环回随机数生成器,直到找到满足条件的数字。这是我的代码,有什么想法吗? :
我尝试更改 Do while 循环的位置。
void remove() {
do {
srand(time(0));
randomnum = (rand () % max) +1 ;
if (randomnum == 1 && redcool > 0) {
red--;
redcool--;
cout << "The random marble removed was a red and cool marble" <<endl;
}
else if (randomnum == 2 && redweird > 0) {
cout << "The random marble removed was a red and weirdl marble" <<endl;
red--;
redweird--;
}
else if (randomnum == 3 && redboring > 0) {
cout << "The random marble removed was a red and boring marble" <<endl;
red--;
redboring--;
}
else if (randomnum == 4 && greencool > 0) {
cout << "The random marble removed was a green and cool marble" <<endl;
green--;
greencool--;
}
else if (randomnum == 5 && greenweird > 0) {
cout << "The random marble removed was a green and weird marble" <<endl;
green--;
greenweird--;
}
else if (randomnum == 6 && greenboring > 0) {
cout << "The random marble removed was a green and boring marble" <<endl;
greenboring--;
green--;
}
else if (randomnum == 7 && bluecool > 0) {
cout << "The random marble removed was a green and cool marble" <<endl;
blue--;
bluecool--;
}
else if (randomnum == 8 && blueboring >0) {
cout << "The random marble removed was a blue and cool marble" <<endl;
blue--;
blueboring--;
}
else if (randomnum == 9 && blueweird > 0) {
cout << "The random marble removed was a blue and weird marble" <<endl;
blue--;
blueweird--;
}
}while (randomnum == 1 && redcool > 0 || randomnum == 2 && redweird >0 || randomnum == 3
&& redboring > 0 || randomnum == 4 && greencool > 0 || randomnum == 5 && greenweird >0 || randomnum == 6
&& greenboring > 0 || randomnum == 7 && bluecool > 0 || randomnum == 8 && blueweird >0 || randomnum == 9
&& blueboring > 0);
bag--;
预期的结果是我添加了十个蓝色和凉爽的弹珠。当我去移除随机弹珠时,它会减少蓝色和凉爽的弹珠,因为这是包中唯一的值。目前,甚至没有删除任何内容。
【问题讨论】:
-
那个
while条件注定要失败 -
@EricPostpischil 感谢您回复我的人!修复了更改,但仍然没有减少任何内容。
-
@o_weisman 哎呀,看起来我搞砸了并用 java 编写了我的作业!
-
@EricPostpischil 我刚刚将我的原始帖子编辑为我现在拥有的代码!再次感谢队友
-
将
srand放入循环会导致rand每次都生成相同的数字,直到至少一秒钟过去。因此,在“蓝色和酷”案例的数字上发生可能需要几秒钟。srand只应在启动随机数序列时调用一次(通常只在程序开始时调用一次)。