-3

私の番号を推測するプログラムを書く宿題がありますが、番号入力なしでやらなければなりません。y/n の質問のみ。これまでの私のコードですが、正しく動作していません。たとえば、24、50、および 75 の数字を推測することはできません。数値入力でちゃんと動きますが、数値入力なしではどうすればいいのかわからないので、コツを教えてください :)

    #include <iostream>

    using namespace std;

    int main()
    {

    cout << "Think of a number 1-100!!\n";

        bool l=false;
        int min=0;
        int max=100;
        int ind;
        int h;
        char answer;
        int tries=0;
        do
        {
            ind=(min+max)/2;
            cout << "Is your number bigger than " << ind << "? (y/n): "; cin >> answer;
            if(answer=='y')
            {
                h=ind+(ind/2);
            }
            else
            {
                h=ind-(ind/2);
            }
            tries++;
            if(ind>h)
            {
                max=ind-1;
                //cout << "ind: " << ind << endl;
                //cout << "h: " << h << endl;
            }
            else if(ind<h)
            {
                min=ind+1;
                //cout << "ind: " << ind << endl;
                //cout << "h: " << h << endl;
            }
            else if(ind=h)
            {
                l=true;
                //cout << "ind: " << ind << endl;
                //cout << "h: " << h << endl;
                cout << h << " is your number!\nWow I guessed it in " << tries << " tries!\nPat me!";
            }
        }while(!l && min<=max);

        return 0;
    }
4

4 に答える 4

3

最初の反復で 50 の場合、あなたindは 50 です。次に、数値が 50 より大きいかどうかを尋ね、その答えはノーです。この場合、どちらが 25 であるかを計算hind-(ind/2)、それを 49 と比較してind設定maxし、ループを続けます。maxしかし、これは正しくありません。この場合、49 に設定すると、正解の 50 が破棄されます。

于 2013-03-20T17:22:47.090 に答える
2

if ステートメント (=) に代入があります。equal-to トークン (==) である必要があります。

于 2013-03-20T17:22:39.973 に答える
1

あなたのコードを読んだ今、それはほとんど理にかなっています。しかし、あなたの使い方hは...間違っています。ここに要約があります。ユーザーの番号が 50 の場合の最初のターンで、このコードについて考えてみてくださいind

cin >> answer;

if(answer=='y')
    h=ind+(ind/2);
else
    h=ind-(ind/2);

if(ind=h)
    cout << h << " is your number!\nWow I guessed it in " << tries << " tries!\nPat me!";
于 2013-03-20T17:24:07.930 に答える
0

質問当てのコードを作るのは簡単ですが、逆にあなたの数字が0から50だと50回も聞かれたらつまらないので、もっと面白くするために変数を作るのも一面です。ジャンプしますが、最大と最小の記録を保持することが重要です。また、ジャンプの分散に機械学習を追加して、インテリジェントにすることもできます

于 2013-03-20T20:08:32.640 に答える