If statement 提问猜谜游戏:效率

If statement 提问猜谜游戏:效率,if-statement,binary-tree,performance,If Statement,Binary Tree,Performance,我正在处理Stroustrup书中的一个练习,我必须设计一个程序,通过提问来猜测用户正在思考的1-100之间的数字,例如“它是否小于50?”等。我不能问超过7个问题才能得到答案 到目前为止,我有这样的想法: string answer; cout << "Think of a number between 1 and 100.\n"; cout << "Is it even or odd? (E/O)\n"; cin >> answer; if (an

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

到目前为止,我有这样的想法:

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.";
                        }
                    }
                }
            }
        }
}
}
字符串应答;
答不上来;
如果(答案=“E”)
{
回答;
如果(答案=“Y”)
{
回答;
如果(答案=“Y”)
{
回答;
如果(答案=“Y”)
{
回答;
如果(答案=“Y”)
{
回答;
如果(答案=“Y”)
{
回答;
如果(答案=“Y”)
{

cout基本上,根据用户所说的,您希望在之前猜测的数字上删除一半或添加一半。如果您在循环中要求输入,您只需每次添加或删除一半数字,然后询问新的数字

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


我想你不是真的想让我们为你编写代码,所以我不会。我相信你可以根据这条线索来解决它!检查/while循环,因为你需要这些循环来完成这项工作。

基本上,根据用户所说的,你想在你之前猜测的数字上删除一半或增加一半。如果你要求在循环中输入,你可以简单地每次添加或删除一半号码,询问新号码

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


我想你真的不想让我们为你写代码,所以我不会。我相信你可以用这条线索找到它!检查/while循环,因为你需要这些循环来完成这项工作。

我选择99…..程序结束了。就像我说的我还没有完成它…它只是树的一个路径选择99…..程序结束了。就像我说的我还没有完成它…它结束了答案只有一条路径,你能澄清一下你所说的删除一半/添加一半是什么意思吗?你指的是仅仅通过问“它是否小于--”来询问用户吗每次在之前提问的一半之间提问的问题种类?感谢您的回复,您能否澄清您所说的删除一半/添加一半是什么意思?您指的是在之前提问的一半之间每次提问的问题种类仅问“是否少于--”?