如何编写"remembers"先前猜测的数字的程序?

How to write a program that "remembers" a previously guessed number?

本文关键字:数字 程序 何编写 remembers      更新时间:2023-10-16

我正在做一道题目,题目要求我和电脑做一个猜谜游戏。以电脑为猜者:

"写一个程序计算一个随机数1100。然后程序要求用户猜测数字。如果用户猜测过高或过低,则程序应相应地输出"过高""过低"。程序必须让用户继续猜测,直到用户正确猜出数字。
★修改程序以输出用户猜了多少次才猜对正确的数字。
★★修改程序,使计算机猜测用户秘密决定的数字,而不是用户猜测计算机给出的数字。用户必须告诉计算机它的猜测是过高还是过低。"

到目前为止,我已经完成了的前两位,但是我被困在了两星部分,程序在那里猜测数字。

下面是我的代码(但正如你所能看到的,它并没有完全按照计划工作)

#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")来创建您所谓的"边界",以便程序"记住"。所以如果它的值太高,它会记住它刚刚猜测的值太高,因此会猜测比它低的值,反之亦然,如果它的值太低。

但是我很难让程序记住这两个部分,例如,如果我的秘密号码是50,计算机猜测80。我会说它太高了,所以它会降得更低。如果它猜测40,我会说它太低了,它会更高。但是这个程序比它原来猜测的80要高,有时甚至比100还要高,我不明白!

任何帮助都会很感激。我不知道我是否走对了这条路,所以任何指示都会有所帮助!谢谢你!

你需要两个额外的变量-说int at_least = 1, at_most = 100; -当你被告知"高"或"低"时,修改那些以反映可能答案范围的新知识。当您选择一个新的compnumber时,通过对当前范围的大小进行建模并添加at_least,使其保持在该范围内。

您需要两个变量来存储猜测的高值和低值,以便计算机知道应该猜测的范围。将此添加到您的代码中:

int high = 101;
int low = 0;

然后当计算机猜测过高时执行以下操作:

high = compnumber;
compnumber = ( rand() % (high-low - 1) ) + low;

当太低时,这个:

low = compnumber;
compnumber = ( rand() % (high-low - 1) ) + low;

希望有帮助