作爲我的入門編程課程的家庭作業,我必須設計和實現一個生成隨機數(1-100)的程序,然後給玩家7猜測以正確猜測數字。我想出了這個算法:如何重構此控制流程以避免使用goto?
但是,我不能工作,如何對算法的這個概念表示翻譯成控制結構。 (我們使用Pascal,所以可用的結構是if語句,預定義循環和後序循環)。由於循環條件位於循環中間並且有兩個退出點,因此無論是預定循環還是後循環都適合內循環!
有人能給我一個關於如何更清晰地構造這個結構的指針嗎?
作爲我的入門編程課程的家庭作業,我必須設計和實現一個生成隨機數(1-100)的程序,然後給玩家7猜測以正確猜測數字。我想出了這個算法:如何重構此控制流程以避免使用goto?
但是,我不能工作,如何對算法的這個概念表示翻譯成控制結構。 (我們使用Pascal,所以可用的結構是if語句,預定義循環和後序循環)。由於循環條件位於循環中間並且有兩個退出點,因此無論是預定循環還是後循環都適合內循環!
有人能給我一個關於如何更清晰地構造這個結構的指針嗎?
我不知道帕斯卡爾所有,但我不知道它有一個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;
}
我會寫出來在C風格
bool gameover;
int tries = 0;
while(!gameover)
{
game over = (tries > 7);
if(answer == correct)
break;
tries++
}
鏈接,while循環PASCAL:http://www.hkbu.edu.hk/~bba_ism/ISM2110/pas024.htm
它看起來固體給我。我不知道帕斯卡,但你不能從內部循環中「打破」嗎?內部循環正在讀取用戶的猜測,顯示提示並遞增計數。它還檢查兩件事:猜測是正確的,計數小於7.如果其中任何一個都是真的,它會顯示一條適當的消息,然後脫離該內部循環,落入外部循環,然後它會詢問用戶想再玩一次。
不幸的是,帕斯卡設計師決定循環中的break語句太危險,不應該被允許。對我來說倒黴:( – guhou 2011-04-27 14:16:16
我做了一些Google搜索,看起來Pascal中有一個「break」命令:http://www.baskent.edu.tr/~tkaracay/etudio/ders/prg/pascal/ PasHTM1/pas/pasl1004.html。然而,我認爲這裏給出的While循環解決方案更優雅 – 2011-04-27 15:14:34
這是不是因爲它不是Pascal,或者它不正確?如果它不正確,我想指出爲什麼會更多很有幫助。 – rybosome 2011-04-27 13:58:37