我正在处理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.";
}
}
}
}
}
}
}我觉得这真的很糟糕,因为我只有一条流程图路径,而且这个程序已经相当长了。有没有更有效的方法来做到这一点?
发布于 2012-10-07 04:30:39
基本上,您希望根据用户所说的将之前猜测的数字减去一半或添加一半。如果您在循环中请求输入,您可以简单地每次添加或删除一半的数字,询问新的数字。
因此,基本上,不需要对每个问题进行硬编码,而是每次都提出相同的问题,但在循环中使用最后一个数字/2或+ (/2)。
我假设你并不是真的想让我们为你写代码,所以我不会。我相信你可以用这个线索来解决这个问题!查看for/while循环,因为您需要这些循环来完成此操作。
https://stackoverflow.com/questions/12763568
复制相似问题