【发布时间】:2015-09-01 16:33:11
【问题描述】:
我正在处理一个问题,它要求我与计算机进行猜谜游戏……计算机是猜谜者:
“编写一个程序,计算一个随机数 1 到 100。然后程序要求用户猜测这个数字。 如果用户猜的太高或太低,那么程序应该相应地输出“太高”或“太低”。 程序必须让用户继续猜,直到用户猜对为止。
★ 修改程序,输出用户猜对了多少次。
★★ 修改程序,使而不是用户猜测计算机提出的数字,计算机猜测用户秘密决定的数字。用户必须告诉计算机它猜的太高或太低。”
到目前为止,我已经完成了前几位,但我被困在程序猜测数字的两星部分。
下面是我的代码:(但正如您所知,它并没有按计划工作)
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int compnumber;
string ok;
cout << "Think of a number between 1 and 100. Type 'ok' and I'll try and guess it." << endl;
cin >> ok;
cout << endl;
srand(time(NULL));
compnumber = rand() % 100 + 1;
cout << compnumber << endl;
cin >> ok;
while (ok != "correct")
{
if (ok == "high")
{
compnumber = rand() % compnumber + 1;
cout << compnumber << endl;
cin >> ok;
}
if (ok == "low")
{
compnumber = rand() % 100 + compnumber;
cout << compnumber << endl;
cin >> ok;
}
}
cout << "I won!" << endl;
}
我正试图找出一种方法让程序记住它之前猜到的数字。我尝试使用if (ok == "high") 和if (ok == "low") 为程序“记住”创建您称之为"boundaries" 的内容。因此,如果它太高,它会记住它刚刚猜到的值太高,因此会猜得比它低,反之亦然,如果它太低。
但我正在努力让程序记住这两个部分,例如如果我的密码是50,计算机会猜到80。我会说它太高了,所以它会降低。如果它猜到40,我会说它太低了,它会更高。但是程序会比原来猜测的 80 还要高,有时甚至比我不明白的 100 还要高!
任何帮助将不胜感激。我不知道我是否走对了这条路,所以任何指针都会有所帮助!谢谢!
【问题讨论】:
-
这听起来像是家庭作业,所以我会为您指出正确的方向。你需要一个上限和下限,计算机的猜测必须在这之间。上限和下限从 100 和 1 开始,您不断调整它们直到获得正确的值。
-
嗯...如何记住一些东西。如果只有计算机有类似“内存”的东西......
-
@IKavanagh 它实际上就在 cplusplus.com 上,只是我自己的一点自学!完美的谢谢:)