我正在研究一个问题,就是要求我在计算机上进行猜谜游戏......计算机就是猜测者:
“通过 100 编写一个计算随机数 1 的程序。程序然后要求用户猜出该数字。 如果用户猜测太高或太低,则程序应相应地输出“太高”或“太低”。 程序必须让用户继续猜测,直到用户正确猜出数字。
★修改程序输出用户正确猜出正确数字所需的猜测量。
★★修改程序因此,计算机不是用户猜测计算机提出的数字,而是猜测用户分泌决定的数字。用户必须告诉计算机它是否过高或过低。“
到目前为止,我已经完成了前几位,但我仍然坚持这个程序猜测数字的两星级部分。
这是我的下面的代码:(但是你可以告诉它,它不能按计划完成)
#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")
为“要记住”的程序创建您称为“boundary”的内容。因此,如果它太高,它会记住它刚刚猜到的值太高,因此会猜测低于此值,反之亦然,如果它太低了。
但是我很难让程序记住这两个部分,例如如果我的密码是 50 ,那么计算机就会猜到 80 。我会说它太高了,所以它会降低。如果它然后猜到 40 ,我会说它太低而且会更高。但是这个程序比 80 的原始猜测更高,有时甚至高于 100 ,我不明白!
任何帮助将不胜感激。我不知道我是否采用了正确的方法,所以任何指针都会有所帮助!谢谢!
答案 0 :(得分:2)
你需要两个额外的变量 - 比如int at_least = 1, at_most = 100;
- 当你被告知“高”或“低”时,修改这些变量以反映可能答案范围的新知识。当您选择新的compnumber
时,请按照范围的当前大小进行修改并添加at_least
,使其保持在该范围内。
答案 1 :(得分:1)
您需要两个变量来存储高和低猜测,以便计算机知道它应该猜测的范围。将其添加到您的代码中:
int high = 101;
int low = 0;
然后,当计算机猜得太高时,请执行此操作:
high = compnumber;
compnumber = ( rand() % (high-low - 1) ) + low;
如果太低,这个:
low = compnumber;
compnumber = ( rand() % (high-low - 1) ) + low;
希望有所帮助