数字猜测器使用函数和中点

时间:2014-09-10 07:49:39

标签: c++

我正在使用函数和中点为数字猜测器编写程序,以找出所选择的数字。我有一个问题编译,我无法弄清楚问题????

我的问题描述:

  

playOneGame函数的返回类型应为void。这应该   在1到100的范围内实现一个完整的猜谜游戏。

     

shouldPlayAgain函数应该有一个布尔返回类型。它   应该提示用户确定用户是否想再玩一次,   读入一个字符,如果字符是'y'则返回true,和   否则返回false。

     

此外,您应该实现辅助函数   getUserResponseToGuessgetMidpoint。应该在里面调用它们   你的playOneGame功能。

     

getUserResponseToGuess。此功能应该提示用户   短语“是吗? (h / l / c):“替换令牌的值   。它应该返回一个char。 char应该是三个中的一个   可能的值:'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 个答案:

答案 0 :(得分:1)

void playOneGame;不是函数转发声明。 void playOneGame();是。同样适用于函数定义。

此外,您应该定义shouldPlayAgain()<stdlib.h> exit()才能正常工作。

并且getUserResponseToGuess()只有return而不是返回有用的内容,并且它不会在默认分支上返回任何内容。