-3

我有一个作业要编写一个猜测我的数字的程序,但我必须在没有数字输入的情况下完成它。只有是/否的问题。到目前为止,这是我的代码,但它无法正常工作。例如,它无法猜出 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

如果第一次迭代ind是 50,那么你就是 50。然后你问这个数字是否大于 50,答案是否定的。在这种情况下,您计算哪个hind-(ind/2)25,然后将其与 49 进行比较ind并设置max为 49,然后继续循环。max但这是不正确的,因为在这种情况下,您通过设置为 49 来丢弃正确的答案 50 。

于 2013-03-20T17:22:47.090 回答
2

我在 if 语句 (=) 中看到了一个赋值。应该是一个等于标记 (==)。

于 2013-03-20T17:22:39.973 回答
1

现在我已经阅读了您的代码,这几乎是有道理的。但是你的用法h是......错误的。这是一个摘要。想一想这个代码在第一回合当用户号码是 50 时,ind是 50。

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 回答