Добавление переменной к входному параметру, который является приглашением

0

У меня есть эта функция, которая должна проверять целочисленный ввод. Как видите, есть три входных параметра. (Подсказка, нижняя граница и верхняя граница)

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

Я не уверен, как я могу получить переменную в этом приглашении.

Теги:

3 ответа

0

(Поскольку я не могу форматировать код в комментарии) Есть много способов исправить ваше решение. Одним из таких способов является то, что вы можете написать еще одну функцию, называемую функцией 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);

Это должно решить проблему!

0

Я предлагаю вам изменить эту функцию.

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;
         }
    }
}
  • 0
    не разрешается использовать операторы перерыва
  • 0
    модифицируется без использования break ..
Показать ещё 2 комментария
0

Ваш запрос не ясен. Что ты имеешь ввиду:

Я не уверен, как я могу получить переменную в этом приглашении.

  • 0
    Это ответ?
  • 0
    Переменная maxDays .... Мне нужно приглашение: «Введите день получения (1-число)», «число» - это maxDays во введенном месяце.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню