我很难让我的程序正常运行。对于我遇到困难的项目部分,我需要创建一个验证用户输入的两个不同数字的函数。然而,每当我运行程序时,我都会遇到两个错误。
一个是输入首先被读取为我输入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;
}
}
答案 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
循环之前如何(如果有的话)初始化months
和do
,但我的猜测是你没有。因此:
cin >> choice;
validate(choice, months);
您正在将未初始化的值作为validate
的第二个参数传递。未初始化的价值可能是任何东西;在你的情况下,它似乎是零。