Number Gusser en c ++ usando la función y el punto medio

Estoy tratando de escribir un código para número gusser usando funciones: la función playOneGame debería tener un tipo de retorno nulo. Debe implementar un juego de adivinanzas completo en el rango de 1 a 100.
La función shouldPlayAgain debe tener un tipo de retorno booleano. Debería solicitar al usuario que determine si desea volver a jugar, leer un personaje, luego devolver verdadero si el personaje es una "y" y, de lo contrario, devolver falso. Además, debe implementar las funciones de ayuda getUserResponseToGuess y getMidpoint. Deben invocarse dentro de su función playOneGame. getUserResponseToGuess. Esta función debe indicar al usuario la frase "¿es así? (h / l / c): “con el valor reemplazando el token. Debería devolver un char. El carácter debería ser uno de los tres valores posibles: "h", "l" o "c". Debe tener la siguiente firma: char getUserResponseToGuess (int guess) getMidpoint. Esta función debe aceptar dos enteros y debe devolver el punto medio de los dos enteros. Si hay dos valores en el medio del rango, debe elegir consistentemente el menor de los dos. Debería tener la siguiente firma: int getMidpoint (int low, int high) Comienzo con él pero todavía no puedo entender la lógica. Esto es lo que tengo hasta ahora.

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

}

Respuestas a la pregunta(1)

Su respuesta a la pregunta