3

入門プログラミング コースの宿題として、乱数 (1 ~ 100) を生成するプログラムを設計して実装する必要があります。次に、プレーヤーに 7 つの推測を与えて、その数を正しく推測します。私はこのアルゴリズムを思いつきました:

制御フロー

しかし、このアルゴリズムの概念的な表現を制御構造に変換する方法がわかりません。(Pascal を使用しているため、使用可能な構造は if ステートメント、事前注文ループ、および事後注文ループです)。ループ条件がループの途中にあり、出口点が 2 つあるため、プリオーダー ループとポストオーダー ループのどちらも内側のループには適合しません。

これをより明確に構造化する方法について、誰かが私に指針を与えることができますか?

4

3 に答える 3

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;
    }
于 2011-04-27T13:52:08.800 に答える
1

私はそれをCスタイルで書きます

bool gameover;

int tries = 0;

while(!gameover)
{
    game over = (tries > 7);
    if(answer == correct)
        break;
    tries++

}

PASCAL の WHILE ループのリンク: http://www.hkbu.edu.hk/~bba_ism/ISM2110/pas024.htm

于 2011-04-27T13:48:42.937 に答える
0

私にはしっかり見えます。Pascal はわかりませんが、内側のループから「抜け出す」ことはできませんか? 内側のループは、ユーザーの推測を読み取り、ヒントを表示し、カウントをインクリメントします。また、2 つのこともチェックします: 推測が正しいこと、およびカウントが 7 未満であること。いずれかが true の場合、適切なメッセージを表示し、その内側のループから抜け出し、外側のループに落ちて、ユーザーがもう一度遊びたいです。

于 2011-04-27T13:50:13.570 に答える