Число Gusser в C ++ с использованием функции и средней точки

Я пытаюсь написать код для gusser числа, используя funcitons: функция playOneGame должна иметь возвращаемый тип void. Следует реализовать полную игру в угадайку в диапазоне от 1 до 100.
Функция shouldPlayAgain должна иметь логический тип возврата. Он должен побудить пользователя определить, хочет ли пользователь снова играть, прочитать символ, а затем вернуть true, если символ «y», и в противном случае вернуть false. Кроме того, вы должны реализовать вспомогательные функции getUserResponseToGuess и getMidpoint. Они должны вызываться внутри вашей функции playOneGame. getUserResponseToGuess. Эта функция должна подсказать пользователю фразу «это так? (h / l / c): «со значением, заменяющим токен. Должен вернуть символ. Символ должен иметь одно из трех возможных значений: «h», «l» или «c». Он должен иметь следующую подпись: char getUserResponseToGuess (int guess) getMidpoint. Эта функция должна принимать два целых числа и возвращать среднюю точку двух целых чисел. Если в середине диапазона есть два значения, вам следует последовательно выбирать меньшее из двух значений. Он должен иметь следующую сигнатуру: int getMidpoint (int low, int high) Я начинаю с него, но до сих пор не могу понять логику этого. Это то, что я имею до сих пор.

#include<iostream>
using namespace std;

 void playOneGame;
 char getUserResponseToGuess(int guess);
 int getMidpoint ( int low, int high);

int main() {
do
 {
 playOneGame();
} while (shouldPlayAgain());
return 0;
}
void playOneGame
{
int a = 100;


cout << "\nGuess a number between 1 and 100. " <<endl;
getUserResponseToGuess ( a);

 }


char getUserResponseToGuess(int guess)
{
while (true)
{
int guess = getMidpoint(minimum, maximum);
std::cout << "\nIs it [h]igher/[l]ower/[e]qual to " << guess << "? ";
char answer;
if (!(std::cin >> answer))
{
    std::cerr << "error reading user input, program exiting\n";
    exit(1);
}
if (answer == 'h')
    minimum = guess + 1;
else if (answer == 'l')
    maximum = guess - 1;
else if (answer == 'e')
{
    std::cout << "Well, isn't that nice.\n";
    return;
}
if (minimum > maximum)
{
    std::cerr << "hey, you lied to me!\n";
    exit(1);
}
}
}

int getMidpoint ( int low, int high)
{

int mid;

mid = (low + high) / 2;

return mid;

}

Ответы на вопрос(1)

Ваш ответ на вопрос