Кажется, у меня проблемы с базовыми c if / else утверждениями: / - PullRequest
0 голосов
/ 22 февраля 2020

ИДЕЯ (C ++):

Идея проста: если вам меньше 21 года и вы учитесь на дневном отделении, вы имеете право (понятия не имею, просто домашнее задание). Если вы не имеете права, вы должны сообщить пользователю, почему.

int main()
{
    string education;
    int age;

    cout << "Are you in full time education? (y/n): ";
    cin >> education;

    cout << "\nEnter your age: ";
    cin >> age;
    system("cls");

    if (((education == "yes" || education == "y")) && (age <= 21))
    {
        cout << "You are eligible.";
    }
    else if (((education == "yes" || "y")) && (age > 21))
    {
        cout << "You are not eligible because you are over 21.";
    }
    else if (((education == "no" || "n")) && (age <= 21))
    {
        cout << "You are not eligible because you are not in full time education.";
    }
    else if (((education == "no" || "n")) && (age > 21))
    {
        cout << "You are not eligible because you are not in full time education and you are over 21.";
    }
    else
    {
        cout << "There is a problem with your input.";
    }
}

ПРОБЛЕМА:

Теперь, если я укажу, что я НЕ в очной форме обучения и старше 21 года, вывод будет «Вы не имеете права, потому что вам больше 21 года », что технически верно, но это должно звучать так:« Вы не имеете права, потому что у вас неполное образование, и вам больше 21 года ». вместо этого!

На заметку:

  • Мои утверждения #include вырезаны из скриншота, но не беспокойтесь о них, я знаю, что они ' все в порядке.
  • Все операторы "else if" изначально были просто "if", но я сделал их таким образом, чтобы попытаться исправить проблему ... безрезультатно.

1 Ответ

5 голосов
/ 22 февраля 2020

Вы не можете использовать оператор или как

a == 'first' || 'second' // education == 'yes' || 'y'

, чтобы сказать "если a равно first или second", вы должны повторить a== также с правой стороны:

a == 'first' || a == 'second' // education == 'yes' || education == 'y'
...