首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提问猜谜游戏:效率

提问猜谜游戏:效率
EN

Stack Overflow用户
提问于 2012-10-07 04:27:53
回答 1查看 355关注 0票数 1

我正在处理Stroustrup书中的一个练习,在这个练习中,我必须设计一个程序,通过提问来猜测用户正在思考的1-100之间的数字。“是不是少于50?”等等。我不能问超过7个问题才能得到答案。

到目前为止,我有这样的东西:

代码语言:javascript
复制
string answer;

cout << "Think of a number between 1 and 100.\n";

cout << "Is it even or odd? (E/O)\n";

cin >> answer;

if (answer == "E") 
{
    cout << "Is it less than 50? (Y/N)\n";
    cin >> answer; 
    if (answer == "Y")
    {
        cout << "Is it less than 25? (Y/N)\n";
        cin >> answer;
        if (answer == "Y")
        {
            cout << "Is it less than 15? (Y/N)\n";
            cin >> answer;
            if (answer == "Y")
            {
                cout << "Is it less than 9? (Y/N)\n";
                cin >> answer;
                if (answer == "Y")
                {
                    cout << "Is it less than 5? (Y/N)\n";
                    cin >> answer;
                    if (answer == "Y")
                    {
                        cout << "Is it less than 3? (Y/N)\n";
                        cin >> answer;
                        if (answer == "Y") 
                        {
                            cout << "Your number is 2.";
                        }
                    }
                }
            }
        }
}
}

我觉得这真的很糟糕,因为我只有一条流程图路径,而且这个程序已经相当长了。有没有更有效的方法来做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2012-10-07 04:30:39

基本上,您希望根据用户所说的将之前猜测的数字减去一半或添加一半。如果您在循环中请求输入,您可以简单地每次添加或删除一半的数字,询问新的数字。

因此,基本上,不需要对每个问题进行硬编码,而是每次都提出相同的问题,但在循环中使用最后一个数字/2或+ (/2)。

我假设你并不是真的想让我们为你写代码,所以我不会。我相信你可以用这个线索来解决这个问题!查看for/while循环,因为您需要这些循环来完成此操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12763568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档