作为我的入门编程课程的家庭作业,我必须设计并实现一个生成随机数(1-100)的程序,然后让玩家猜测正确猜测数字。我想出了这个算法:
但是,我无法弄清楚如何将算法的概念表示转换为控制结构。 (我们使用Pascal,因此可用的结构是if语句,预订循环和后序循环)。预循环和后序循环都不适合内循环,因为循环条件位于循环的中间,并且有两个退出点!
有人能给我一个关于如何更清楚地构建这个问题的指针吗?
答案 0 :(得分:2)
我根本不知道Pascal,但我知道它有一个while循环...所以我会以类似下面的方式构造它...(用伪代码编写)
boolean userWishesToPlay = true;
int userGuess = -1;
int ranValue;
int guessCount = 0;
while (userWishesToPlay) {
ranValue = generateRandomValue();
while(userGuess != ranValue && guessCount < 7) {
// Give hint if user has guessed more than once
if (guessCount >= 1) {
// give hint
}
userGuess = // get input from user
guessCount += 1;
}
if (userGuess == ranValue) {
// print congrats!
} else {
// print game over
}
userWishesToPlay = // get input from user on whether to play again or not
userGuess = -1; // since random value will be between 1 and 100 this is safe
guessCount = 0;
}
答案 1 :(得分:1)
我会用c风格写出来
bool gameover;
int tries = 0;
while(!gameover)
{
game over = (tries > 7);
if(answer == correct)
break;
tries++
}
在PASCAL中循环时的链接:http://www.hkbu.edu.hk/~bba_ism/ISM2110/pas024.htm
答案 2 :(得分:0)
对我来说看起来很稳固。我不知道Pascal,但你不能“打破”内循环吗?内循环正在读取用户的猜测,显示提示,并递增计数。它还检查两件事:猜测是正确的,并且计数小于7.如果其中任何一个为真,它显示一个适当的消息,然后突破该内部循环,落入外部循环,然后询问用户是否想再玩一次。