gpt4 book ai didi

c++ - 由于四舍五入,计算 1 到 100 之间数字的程序永远不会猜测 "100"

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:32 25 4
gpt4 key购买 nike

我刚刚开始使用 C++。我写了一个小程序,在 1-100 之间选择一个随机数,然后修改它,让程序计算出这个数字(并计算需要猜测的次数)。

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

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

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

谢谢!

程序完整代码:

#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 ;

然后

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

关于c++ - 由于四舍五入,计算 1 到 100 之间数字的程序永远不会猜测 "100",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18583640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com