【问题标题】:How to write a program that "remembers" a previously guessed number?如何编写一个“记住”先前猜测的数字的程序?
【发布时间】:2015-09-01 16:33:11
【问题描述】:

我正在处理一个问题,它要求我与计算机进行猜谜游戏……计算机是猜谜者:

“编写一个程序,计算一个随机数 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") 为程序“记住”创建您称之为"boundaries" 的内容。因此,如果它太高,它会记住它刚刚猜到的值太高,因此会猜得比它低,反之亦然,如果它太低。

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

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

【问题讨论】:

  • 这听起来像是家庭作业,所以我会为您指出正确的方向。你需要一个上限和下限,计算机的猜测必须在这之间。上限和下限从 100 和 1 开始,您不断调整它们直到获得正确的值。
  • 嗯...如何记住一些东西。如果只有计算机有类似“内存”的东西......
  • @IKavanagh 它实际上就在 cplusplus.com 上,只是我自己的一点自学!完美的谢谢:)

标签: c++ random


【解决方案1】:

你需要两个额外的变量——比如int at_least = 1, at_most = 100;——当你被告知“高”或“低”时,修改它们以反映可能答案范围的新知识。当您选择一个新的compnumber 时,通过修改范围的当前大小并添加at_least 将其保持在该范围内。

【讨论】:

    【解决方案2】:

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

    int high = 101;
    int low = 0;
    

    然后当计算机猜测太高时这样做:

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

    如果太低,则:

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

    希望有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-27
      • 2020-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多