猜猜我的号码! C ++

时间:2013-03-20 17:17:35

标签: c++ search numbers

我有一个编写一个猜测我的号码的程序的作业,但我必须在没有数字输入的情况下这样做。只有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 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

答案 2 :(得分: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!";

答案 3 :(得分:0)

很容易制作猜测码,但另一方面,如果他问你50次从0开始你的数字是50,那就太无聊了,所以让它变得更有趣的一方面就是制作一个变量用于跳跃,但记录Max&amp; Min非常重要,您也可以通过跳跃方差添加机器学习来使其变得智能化