由于四舍五入,计算 1 到 100 之间数字的程序永远不会猜到“100”

2024-01-02

我刚刚开始接触 C++。我编写了一个小程序,选择 1-100 之间的随机数,然后对其进行修改以使程序计算出该数字(并计算所需的猜测次数)。

程序中的所有内容都有效,除了一件事。我正在使用一个公式来猜测当前猜测值与之前的最高/最低值之间的差异,因此对于猜测来说太低了:

low = guess;
guess = (( guess + high ) / 2);

它适用于除 100 之外的所有数字。当它达到 99 时,它会将 199/2 舍入到 99,因此我会无限循环地猜测“99”。有没有办法防止这种情况或有一些公式可以解决这个问题?我知道我可以使 int high = 101 或编写一个特殊情况,如果程序将再次猜测 99,但这似乎不是对此的“干净”答案。

Thanks!

完整的程序代码:

#include <cstdlib>
#include <ctime>
#include <iostream>

using namespace std;

int randResult ( int low, int high )
{
    return rand() % ( high - low + 1 ) + low;
}

int main ()
{
srand( time ( NULL ));

int guess = 50; //set the initial guess
int high = 100;
int low = 1;
//int number = randResult( 1, 100 );
int number = 100;  //using this to test limits of guessing
int numberOfGuesses = 0;
bool guessCorrectly;

while ( guessCorrectly == 0 )
{
    cout << "Computer guessing " << guess << endl;
    numberOfGuesses++;

    if ( guess == number )
    {
        cout << "Correct!  The number was " << number << endl;
        guessCorrectly = 1;
    }
    else if ( guess < number )
    {
        cout << "Too low!" << endl;
        low = guess;
        guess = (( guess + high ) / 2);
    }
    else
    {
        cout << "Too high!" << endl;
        high = guess;
        guess = (( guess + low ) / 2 );
    }
}

cout << "Total Number of Guesses: " << numberOfGuesses << endl;
cout << "The Number Was: " << number << endl;

}

另一种选择是你从

    int high= 101 ;

你永远不会要求101,因为在最坏的情况下你会得到

    low= 99 ;
    high= 101 ;

And then

    guess= ( low + high ) / 2 ;   // = 100
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

由于四舍五入,计算 1 到 100 之间数字的程序永远不会猜到“100” 的相关文章

  • 如何使用movntdqa避免缓存污染?

    我正在尝试编写一个 memcpy 函数 该函数不会将源内存加载到 CPU 缓存中 目的是避免缓存污染 下面的 memcpy 函数可以工作 但会像标准 memcpy 一样污染缓存 我正在使用带有 Visual C 2008 Express 的
  • 每个 CPU 核心处于 C0 电源状态的时间

    任何帮助弄清楚如何做到这一点都会很棒 在过去一秒内 每个 CPU 核心处于 C0 电源状态的时间有多少 这是针对 Mac 应用程序的 因此需要 Objective C cocoa 和 c OS X 没有任何公开 CPU c 状态的 API
  • 如何将 pem 公钥转换为 openssl RSA* 结构

    假设我必须像这样公开 pem 密钥 BEGIN PUBLIC KEY MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vbqajDw4o6gJy8UtmIbkcpnk O3Kwc4qsEnSZp TR fQi
  • 线程安全的get(访问器方法)

    我目前正在使用以下代码对变量进行线程安全访问 int gnVariable void getVariableValue int pnValue acquireLock Acquires the protection mechanism pn
  • 在 C++ 中,严格别名规则中的“访问”是什么意思?

    3 10 10 说 如果一个程序试图access通过除以下类型之一之外的泛左值存储对象的值 行为未定义 然而 术语 访问 并没有在任何地方定义 在这种情况下这意味着read or 读取或修改 在 C 标准中 它被明确定义为读取或修改 然而在
  • 用 C++ 解密文件,该文件使用 openssl -aes-128-cbc 加密

    我正在尝试用 C 解密文件 该文件使用以下命令加密 openssl enc nosalt aes 128 cbc pass pass test in test txt out test enc txt p 控制台显示key 098F6BCD
  • 尝试将元素推入向量

    在头文件 我没有编写 中 已经定义了一个结构体 如下所示 struct MemoryMessage public boost counted base public FastAlloc explicit MemoryMessage Memo
  • 从空白启动时 VSTO 功能区不显示解决方案

    如果我从 文件 新建项目 菜单创建一个新的 Excel 2013 和 2016 VSTO 加载项 项目 然后单击 项目 添加新项目 gt 功能区 可视化设计器 则一切正常 我启动了应用程序 我的功能区显示在 Excel 中 但是 如果我首先
  • popen2()在c中如何工作?

    我尝试使用管道 叉子和 dup 在我的程序中执行 md5sume 命令 我发现总和代码运行成功 但我无法理解某些代码行 这是我的代码 int infp outfp char buf 128 if popen2 md5sum infp out
  • 读取所有进程内存以查找字符串变量c#的地址

    我有 2 个用 C 编写的程序 第一个名为 ScanMe 的程序包含一个包含值 FINDMEEEEEEE 的字符串变量 以及一个值为 1546 22915487 的双精度变量 另一个名为 MemoryScan 的程序读取第一个程序的所有内存
  • 如何在 Xamarin.Mac 中执行终端命令并读入其输出

    我们正在编写一个 Xamarin Mac 应用程序 我们需要执行像 uptime 这样的命令 并将其输出读取到应用程序中进行解析 这可以做到吗 在 Swift 和 Objective C 中都有 NTask 但我似乎无法在 C 中找到任何示
  • 如何带参数调用外部程序?

    我想在我的代码中调用一个 Windows 程序 并使用代码本身确定的参数 我不想调用外部函数或方法 而是调用 WinXP 环境中的实际 exe 或批处理 脚本文件 C 或 C 将是首选语言 但如果使用任何其他语言更容易完成此操作 请告诉我
  • 选择要重写哪个基类的方法

    鉴于以下情况 class Observer public virtual void Observe Parameter p 0 template
  • gcc 中的“假设”子句

    gcc 最新版本 4 8 4 9 是否有类似于以下的 假设 子句 assume 内置icc支持吗 例如 assume n 8 0 从 gcc 4 8 2 开始 gcc 中没有 assume 的等效项 我不知道为什么 这会非常有用 马夫索建议
  • #define, #ifdef #undef #endif

    我有以下代码 define PROC ADD void main void while 1 ifdef PROC ADD Do this code here then undefined it to run the code in the
  • 如何从标准输入读取一行,阻塞直到找到换行符?

    我试图从命令行的标准输入一次读取任意长度的一行 我不确定是否能够包含 GNU readline 并且更喜欢使用库函数 我读过的文档表明getline应该可以工作 但在我的实验中它不会阻塞 我的示例程序 include
  • 在 C# 中将 ulong 映射到 long ?

    我正在尝试将 ulong 映射到 long 反之亦然 将 uint 映射到 int 反之亦然 如下所示 为了将值保存在具有签名类型的 MS SQL 数据库中仅限整数和大整数 我这样做是因为我必须检查 在数据库中 一个数字 uint ulon
  • 什么是多重重继承?

    我将以下称为 多重重新继承 直接继承一个类一次 并通过继承其一个或多个后代来间接继承一次或多次 通过继承一个类的两个或多个后代来间接继承一个类两次或多次 我想知道它是否存在以及如何明确访问嵌入的子对象 1 Professional C 2n
  • 使用 wmi 获取活动会话(Win32_LogonSession 还返回非活动/旧会话)

    有没有办法只显示 wmi 的活动会话 问题是 Win32 LogonSession 还显示不活动 断开连接的会话 ManagementScope scope new ManagementScope ManagementPath Defaul
  • C++20 范围太多 |运营商?

    我在这段代码中使用 g 10 2 有谁知道为什么我最后收到编译器错误std views reverse on results3 include

随机推荐

  • 具有多个子字段的 Drupal 自定义 CCK 字段

    有没有办法创建一个可以有多个值的复合字段 每个值都有另一组复合值 例如 我们希望最后有这样的结构 Group 1 unlimited number of groups 子字段 每组无限个子字段 子字段 Group 2 子字段 子字段 对于定
  • 如何防止 WordPress 页面被用户删除

    一些 WordPress 插件会创建页面或帖子 插件的正常功能依赖于该页面或帖子的存在 例如 管理电子邮件列表的插件可能依赖于取消订阅页面 用户可能会有意或无意地删除该页面 插件如何防止其页面被删除 首先 当您创建页面时 您可以将其 ID
  • 直接在 Intellij Idea/WebStorm 中运行笑话测试?

    我在用着jest https facebook github io jest 在我的 ReactJS 应用程序中编写测试 到目前为止 要运行我的测试套件 我需要输入 npm test 这是 package npm 中的片段 scripts
  • Python3没有这样的文件或目录

    我正在尝试制作 python3 可执行脚本并从 shell 运行它们 我的系统上安装了 python 3 4 0 所以 我添加了 home spandan python codes 目录到Python路径 因为我计划将我的脚本和模块保留在这
  • AWS CodePipeline 将多个存储库作为单一源进行跟踪

    我正在调查 CodePipeline 是否适用于我们的用例 我们有数百个存储库 全部由 CodeCommit 托管 除了较小的配置之外 所有这些的构建 测试 发布过程都是相同的 我想做的是建立一个管道 用于构建 测试 发布在任何这些存储库中
  • R传单。将点数据分组到单元格中以汇总许多数据点

    早上 下午或晚上 我有以下位置数据 调整自 网格单元内采样点的计数 https stackoverflow com questions 56217221 count of sampling points within a grid cell
  • Eclipse Luna CDT:什么是标头变体?

    我很难让 Eclipse Indexer Codan 识别头文件中的某些数据声明 有一个新的偏好索引所有标头变体 http wiki eclipse org CDT User NewIn83 Preferences for header v
  • 使用“功能分支”与重构兼容吗?

    特征分支 是指每个功能都在自己的分支中开发 只有在经过测试并准备好交付后才合并到主线中 这允许产品所有者选择进入给定发货的功能 并在出现更重要的工作时 保留 部分已编写的功能 例如 客户打电话给 MD 投诉 重构 正在改造代码以改进其设计
  • 将应用程序更新到应用程序商店:审核时间以及商店的评分?

    这太令人沮丧了 我已将我们的应用程序上传到应用程序商店 8 天后获得批准 然后我下载了它 发现加速度计卡住了 所以我去了itunes connect 将发布日期更改为未来的发布日期 取消选中世界上所有的商店 它说 已被开发人员删除 这就是我
  • 透明着色器允许下面的对象显示在上面

    在我的场景中 笑脸 带有 png 图像的四边形 放置在 Y 0 处 点 带有平铺 3X3 的四边形 放置在 Y 0 25 处 我需要用于笑脸的着色器是透明漫反射 因为我使用的是圆形 png 图像 但我在下面使用的点显示在笑脸上方 使用任何其
  • C读取bmp文件

    我正在尝试将 bmp 文件读入我的程序 但遇到了一些问题 读入文件后 如果我告诉它打印 pBmp gt header fileSize 它会显示 16 但如果我在十六进制编辑器中查看它 如果我将该值修改为正确的文件大小 则文件大小部分为 F
  • 通过 PyTumblr 仅返回 20 个帖子

    我在用PyTumblr https github com tumblr pytumblr返回我所有的帖子 但它只返回 20 我找到了 posts 函数的 kwarg 称为 limit 但当我指定 1000 时 它仍然返回 20 知道我做错了
  • 在 C# 中使用 crl(证书吊销列表)验证证书

    我想使用 CRL 属性验证证书 但是 当我在设置 CRL 检查标志后调用证书上的 verify 方法时 会出现以下错误 1 撤销状态未知 gt 吊销功能无法检查证书的吊销情况 2 离线撤销 gt 吊销功能无法检查证书的吊销 因为吊销服务器已
  • 当相应的py被移动时自动删除pyc文件(Mercurial)

    我三个月前就预见到这个问题可能会发生 并被告知要努力避免它 昨天 我被它咬了一口 很厉害 现在它花了我真金白银 我很想解决它 如果我将一个 Python 源文件移动到另一个目录中 我需要记住告诉 Mercurial 它已移动 hg move
  • ArrayList 的 ArrayList 添加和检索元素

    我有一个整数数组列表 mainList 里面有整数数组 subList 我试图将整数数组元素添加到 mainList 并稍后显示它们 将 subList 添加到 mainList 并显示 subList 中的所有元素 2 subLists
  • Windows - Android SDK 管理器未列出任何要安装的平台或软件包

    当我使用可用的 exe 文件安装 Android SDK 并且打开 Android SDK 管理器后 我看不到任何需要安装的附加软件包 列出的只是 Tools 文件夹下的 Android SDK Tools Extras 文件夹下也不显示任
  • 使用子目录时PyQt4 SIGNAL/SLOT问题

    预先感谢您花时间阅读本文 抱歉 它有点冗长 但希望它能完全解释问题 包含演示该问题的剥离代码 我的 PyQt4 信号 插槽有问题 虽然如果我在单个文件中编写 我可以使一切正常工作 但如果我希望使用的某些函数移动到子目录 类 我就无法使一切正
  • 我的 CASE 语句查询有什么问题

    我正在尝试解决 13http www sqlzoo net wiki The JOIN operation http www sqlzoo net wiki The JOIN operation 列出每场比赛以及每支球队的进球数 如图所示
  • 如何在 PySpark 中转换数据帧列中的 JSON 字符串?

    我有一个 pyspark 数据框 如下所示 c0 c1 object F 0 object F 1 object F 2 object E 3 object F 4 object F 5 object F 6 object S 7 obje
  • 由于四舍五入,计算 1 到 100 之间数字的程序永远不会猜到“100”

    我刚刚开始接触 C 我编写了一个小程序 选择 1 100 之间的随机数 然后对其进行修改以使程序计算出该数字 并计算所需的猜测次数 程序中的所有内容都有效 除了一件事 我正在使用一个公式来猜测当前猜测值与之前的最高 最低值之间的差异 因此对