Gusser numérico em c ++ usando função e ponto médio

Estou tentando escrever um código para o número gusser usando as funções: A função playOneGame deve ter um tipo de retorno nulo. Ele deve implementar um jogo de adivinhação completo no intervalo de 1 a 100.
A função shouldPlayAgain deve ter um tipo de retorno booleano. Ele deve solicitar ao usuário que determine se ele deseja jogar novamente, leia um personagem e, em seguida, retorne true se o personagem for um "y" e retorne false. Além disso, você deve implementar as funções auxiliar getUserResponseToGuess e getMidpoint. Eles devem ser chamados dentro da sua função playOneGame. getUserResponseToGuess. Esta função deve solicitar ao usuário a frase “é? (h / l / c): “com o valor substituindo o token. Deve retornar um caractere. O caractere deve ser um dos três valores possíveis: 'h', 'l' ou 'c'. Ele deve ter a seguinte assinatura: char getUserResponseToGuess (int guess) getMidpoint. Essa função deve aceitar dois números inteiros e retornar o ponto médio dos dois números inteiros. Se houver dois valores no meio do intervalo, escolha sempre o menor dos dois. Ele deve ter a seguinte assinatura: int getMidpoint (int baixo, int alto) Começo com ele, mas ainda não consigo entender a lógica dele. É isso que tenho até agora.

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

}

questionAnswers(1)

yourAnswerToTheQuestion