2013-02-14 6 views
0

направление в проекте говорится следующее: «Для уровня активности, если входной сигнал не является действительным, распечатайте сообщение и сообщить пользователю, вы предполагая, что они ведут оседлый образ жизни»Как установить значение по умолчанию при вводе неверного/недопустимого ввода?

Следующая мой текущий код, я пытаюсь установить его по умолчанию на "Sedentary", который пользователь может ввести как SA или sa. По умолчанию для недопустимого ввода предполагается сделать программу по умолчанию сидячей, и я немного смущен, правильно ли я нахожусь на правильном пути или нет.

else if (gender == 'F' || gender == 'f') { 
    cout << "Please enter your Height in inches. (You may include a decimal) "; 
    cin >> height; 

    cout << "Please enter your Weight in pounds as a whole number. "; 
    cin >> weight; 

    cout << "Please enter your Age in years. "; 
    cin >> age; 
    cout << endl; 

    if (activity_level = 'SA' || activity_level = 'sa' || activity_level = 'LA' || activity_level = 'la' || 
     activity_level = 'MA' || activity_level = 'ma' || activity_level = 'VA' || activity_level = 'va') { 
     cout << "Please enter your activity level." << endl << endl; 
     cout << "You may enter one of the following choices." << endl << endl; 
     cout << "Sedentary (Little or no exercise) \"SA\" or \"sa\" " << endl; 
     cout << "Lightly Active (Light exercise/sports 1-3 days a week) \"LA\" or \"la\" " << endl; 
     cout << "Moderately Active (Moderate exercise/sports 3-5 days a week) \"MA\" or \"ma\" " << endl; 
     cout << "Very Active (Hard exercise/sports 6-7 days a week) \"VA\" or \"va\" " << endl << endl; 
     cout << "Enter your activity level now. "; 
     cin >> activity_level; 
     cout << endl; 
    } 
    // Output for the message to defualt to Sedentary if you do not select activity level throught he proper input. 
    else { 
     activity_level = 
     cout << "I'm sorry I did not recogonize that activity level. We will assume a sedentary amount of exercise. " 
    } 
} 

В принципе, мне интересно, если что я делаю; использование другой инструкции if в заявлении else if будет работать, и мне интересно, будет ли способ, который я установил на данный момент, произвести требуемый результат.

+1

'activity_level = 'SA'' выполняет * присваивание *' activity_level', а не сравнение. 'activity_level ==" SA "будет сравнением. –

+0

Почему вы проверяете уровень activity_level, прежде чем пользователь сможет его ввести? –

+0

Хорошо, я видел эту ошибку, по крайней мере, после того, как я ее разместил. – user2072795

ответ

0

Если вы хотите по умолчанию SA, то вы можете сделать это:

//Assume activity_level has had something assigned to it, to compare to. 

    if (activity_level == "SA" || activity_level == "sa" || activity_level == "LA" || activity_level == "la" || 
     activity_level == "MA" || activity_level == "ma" || activity_level == "VA" || activity_level == "va") 
    { 
     //Do stuff if input is valid 
    } 
    // Output for the message to defualt to Sedentary if you do not select activity level throught he proper input. 
    else 
    { 
     activity_level = "SA"; 
     std::cout << "I'm sorry I did not recogonize that activity level. We will assume a sedentary amount of exercise."; 
    } 

Также что-то одинарные кавычки может быть только один char, все еще нуждается в двойные кавычки вокруг него, потому что это строка.

+0

Спасибо за помощь. Ценить это. – user2072795

0

Вы должны проверить переменную `activity_level 'после ей было присвоено значение. Также вы должны использовать == для сравнения. И вы могли бы использовать! оператора для отрицания условия.

Смежные вопросы