功能原型困难

时间:2014-04-09 17:53:43

标签: c++ function function-prototypes

我很难让我的程序正常运行。对于我遇到困难的项目部分,我需要创建一个验证用户输入的两个不同数字的函数。然而,每当我运行程序时,我都会遇到两个错误。

一个是输入首先被读取为我输入0(即使我没有)

第二个是它通过第二个输入验证测试来判断它是否运行第一个输入

功能原型:

int validate(int , int);

主:

do
{       
    //display the menu
    displayMenu();
    cin >> choice; 
    validate(choice, months);

    // process the user's choice
    if (choice != QUIT_CHOICE)
    {
        // get the number of months
        cout << over3 << "For how many months? ";
        cin >> months; 
        validate(choice, months);
}

问题中的函数原型:

int validate(int choice, int months)
{
while (choice < 1 || choice > 4)
{
    cout << over3 << choice << " is not between 1 and 4! Try again: ";  
    cin >> choice;
}

while (months < 1 || months > 12)
{
    cout << over3 << months << " is not between 1 and 12! Try again: "; 
    cin >> months;
}

}

2 个答案:

答案 0 :(得分:0)

由于它们彼此独立,因此需要将两个函数分开以用于您的目的:validateChoice由第一个while循环组成,validateMonths由第二个while循环组成。

如果您想要单个功能本身,则需要传递适当的参数

int validate(int value, int lowLimit, int HighLimit)
{
    while(value < lowLimit || value > HighLimit)
    {
        //print error message here
        cin>> value;
    }
    return value;
}

主要是做

cin >> choice;
choice = validate(choice, 1, 4);

同样适用于months

答案 1 :(得分:0)

您还没有说明在choice循环之前如何(如果有的话)初始化monthsdo,但我的猜测是你没有。因此:

cin >> choice; 
validate(choice, months);

您正在将未初始化的值作为validate的第二个参数传递。未初始化的价值可能是任何东西;在你的情况下,它似乎是零。