У меня есть эта функция, которая должна проверять целочисленный ввод. Как видите, есть три входных параметра. (Подсказка, нижняя граница и верхняя граница)
double getValidNumber( string prompt, double lowerLimit, double upperLimit)
{
double num;
cout << prompt;
cin >> num;
while (num < lowerLimit) {
cout << "Entry must be greater than or equal to " << lowerLimit << endl;
cout << prompt;
cin >> num;
}
while (num > upperLimit)
{
cout << "Entry must be less than or equal to " << upperLimit << endl;
cout << prompt;
cin >> num;
}
return num;
}
в одном из приглашений также должна быть переменная (maxDays), а остальная - строка. Этот вызов сделан из основного
//calls function to validate year of pickup
year = getValidNumber
("Enter pick up year (2014-2024): ", 2014 , 2024);
//calls function to validate month of pickup
month = getValidNumber
("Enter pick up month (1-12): ", 1 , 12);
//calls function to get max days in month
maxDays = daysInMonth (year, month);
// If a user inputs 2014, 2 (for Feb) there are only 28 days this year
// I need the prompt to be "Enter pick up day (1-28):
//calls function to validate pickup day is within month
day = getValidNumber
("Enter pick up day (1- maxDays)", 1, maxDays);
Я не уверен, как я могу получить переменную в этом приглашении.
(Поскольку я не могу форматировать код в комментарии) Есть много способов исправить ваше решение. Одним из таких способов является то, что вы можете написать еще одну функцию, называемую функцией getValidNumberDay()
которая выглядит так:
double getValidNumberDay( string prompt, double lowerLimit, double upperLimit)
{
double num;
bool choice = 0;
while (choice == 0) {
cout << prompt << upperLimit << ")";
cin >> num;
if (num < lowerLimit)
{
cout << "Entry must be greater than or equal to " << lowerLimit << endl;
cout << prompt;
cin >> num;
}
else if (num > upperLimit)
{
cout << "Entry must be less than or equal to " << upperLimit << endl;
cout << prompt;
cin >> num;
}
else
{
choice = 1;
}
}
return num;
}
Затем maxDays
вызов функции с помощью maxDays
чтобы выглядеть так:
day = getValidNumberDay
("Enter pick up day (1- ", 1, maxDays);
Это должно решить проблему!
Я предлагаю вам изменить эту функцию.
double getValidNumber( string prompt, double lowerLimit, double upperLimit)
{
double num;
while (true)
{
cout << prompt;
cin >> num;
if (num < lowerLimit)
{
cout << "Entry must be greater than or equal to " << lowerLimit << endl;
}
else if (num > upperLimit)
{
cout << "Entry must be less than or equal to " << lowerLimit << endl;
}
else
{
return num;
}
}
}
Ваш запрос не ясен. Что ты имеешь ввиду:
Я не уверен, как я могу получить переменную в этом приглашении.