Модуль: (C++) Вложенный условный оператор. Сложные условия


Задача

2/13

Сложные условия

Теория Нажмите, чтобы прочитать/скрыть

Сложные условия

Часто условия, которые необходимо проверять перед выполнением действий сложно сформулировать в простом виде. 
 
Пример 
Проверить, находится ли число n в диапазоне [a, b]. Для проверки необходимо выполнения двух условий n >= a и n <= b.

Можно написать программу, использующую вложенный условный оператор
#include <iostream>
using namespace std;
int main() {
    int n, a, b;
    cin >> n >> a >> b;
    if (n >= a)
    {
        if (n <= b)
        {
            cout << "YES" << endl;
        }
        else
        {
            cout << "NO" << endl;
        }
    }
    else
    {
        cout << "NO" << endl;
    }
    return 0;
}

Программа в этом случае становится достаточно громоздкой. И, как можно заметить, нам пришлось дважды писать строку cout << "NO" << endl;.

Чтобы упростить программу необходимо использовать сложные условия.
 
Сложное условие - состоит из двух или нескольких простых условий, которые объединяются с помощью логических операций (логических связок).
 

Логические операции на языке С++

Операция Пример Значение
&&
или and
выражение1 && выражение2
или
выражение1 and выражение2
Логическое И
True только если все выражения True
если выражение1 ложно, то выражение2 проверяться не будет.
||
или or
выражение1 || выражение2
или
выражение1 or выражение2
Логическое ИЛИ
True, если хотя бы одно выражение True
выражение1 истинно, то выражение2 проверяться не будет.
!
или not
!выражение
или
not выражение
Логическое НЕ
True только если веражение False

Выражение представляет из себя логическое условие (может быть простым или сложным)
 
Приоритет выполнения логических операций и отношений
1. Операции в скобках.
2. Операция НЕ.
3. Логические отношений >, <, >=, <=, ==, !=.
4. Операция И.
5. Операция ИЛИ.
Для изменения порядка действий используются круглые скобки.
 

Логические переменные

Во многих языках программирования есть возможность использовать переменные, которые хранят логические значения ("истина"/"ложь"). В С++ такие переменные могут принимать значения true (истина) или false (ложь). Например, фрагмент программы: 
bool a, b;
a = true;
b = false;
cout << a || b;
Выведет на экран 1 (что соответствует значению true, значению false соответствует 0).

Логические переменные относятся к типу bool, названной в честь английского математика Джорджа Буля - создателя алгебры логики.

Задача

Дано натуральное число n < 109. Выведите YES, если число n двузначное и NO - в противном случае.

Дополните программу.