函数原型困难

Function prototype difficulties

本文关键字:原型 函数      更新时间:2023-10-16

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

一个是当我输入0(尽管我没有)时,首先读取输入

第二个是它处理它通过第二个输入验证测试运行第一个输入

功能原型:

int validate(int , int);

Main:

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

由于两者都是独立的,因此您需要将分离为两个函数: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);

与CCD_ 3类似。

您还没有展示如何(如果有的话)在do循环之前初始化choicemonths,但我猜您还没有。因此这里:

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

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