JustCaptain kod-buduschego
0c215d6bd3ad548a5cf5fee4d168ffd04adaac92
Перейти к файлу
Код
kod-buduschego C++Тема 1.3. Логические выражения и условные операторыНеобходимый материал.md
anc add 1.3. topic 253504b 2 недели назад
Необходимый материал.md

📘 Тема 1.3. Необходимый материал#

Шпаргалка по конструкциям, которые пригодятся для задач на условия.


1. Логический тип bool#

Переменная типа bool хранит одно из двух значений: true (истина) или false (ложь).

bool isReady = true;
bool isEmpty = false;

cout << isReady << endl;              // 1
cout << boolalpha << isReady << endl; // true

Заметка

По умолчанию cout печатает bool как 1 или 0. Чтобы вывести слова true / false, используйте boolalpha.


2. Операторы сравнения#

Результат любого сравнения — значение типа bool.

Оператор Значение Пример Результат
== равно 5 == 5 true
!= не равно 5 != 3 true
> больше 5 > 3 true
< меньше 5 < 3 false
>= больше или равно 5 >= 5 true
<= меньше или равно 5 <= 3 false
int a = 7, b = 3;
bool result = a > b;   // true

Предупреждение

= — это присваивание, == — это сравнение.

x = 5;    // записать в x число 5
x == 5    // проверить, равен ли x пяти

3. Логические операции#

Операция Запись Когда истинно
И (конъюнкция) && когда оба условия истинны
ИЛИ (дизъюнкция) || когда хотя бы одно условие истинно
НЕ (инверсия) ! меняет значение на противоположное
Исключающее ИЛИ ^ когда истинно ровно одно из двух

Таблицы истинности#

A B A && B A || B A ^ B
true true true true false
true false false true true
false true false true true
false false false false false
A !A
true false
false true

Примеры#

bool a = (5 > 3) && (2 > 4);   // false
bool b = (5 > 3) || (2 > 4);   // true
bool c = !(5 > 3);             // false

Совет

У && приоритет выше, чем у ||. Ставьте скобки, чтобы не запутаться:

bool ok = (x > 0 && x < 10) || (x == 100);

4. Частые проверки#

Число в диапазоне#

bool inRange = (x >= 10) && (x <= 20);   // x от 10 до 20 включительно

Внимание

Запись 10 <= x <= 20 в C++ не работает так, как в математике. Правильно: 10 <= x && x <= 20.

Чётность и делимость#

bool isEven = (x % 2 == 0);       // чётное
bool isOdd  = (x % 2 != 0);       // нечётное
bool div5   = (x % 5 == 0);       // делится на 5

Знак числа#

bool isPositive = x > 0;
bool isNegative = x < 0;
bool isZero     = x == 0;

Одно из нескольких значений#

bool isWeekend = (day == 6) || (day == 7);

Символ — буква или цифра#

char c;
bool isUpper  = (c >= 'A' && c <= 'Z');
bool isLower  = (c >= 'a' && c <= 'z');
bool isDigit  = (c >= '0' && c <= '9');

Последняя цифра числа#

int last = x % 10;        // последняя цифра
int lastTwo = x % 100;    // две последние цифры

5. Условный оператор if#

Блок выполняется, только если условие истинно.

if (условие) {
    // инструкции
}
int temperature;
cin >> temperature;

if (temperature < 0) {
    cout << "Мороз" << endl;
}

6. if-else — два варианта#

if (условие) {
    // если условие истинно
} else {
    // если условие ложно
}
int age;
cin >> age;

if (age >= 18) {
    cout << "Взрослый" << endl;
} else {
    cout << "Ребёнок" << endl;
}

7. if - else if - else — несколько вариантов#

Условия проверяются сверху вниз. Выполняется первая ветка, условие которой истинно, остальные пропускаются.

if (условие1) {
    // если условие1 истинно
} else if (условие2) {
    // если условие1 ложно, а условие2 истинно
} else {
    // если все условия ложны
}
int speed;
cin >> speed;

if (speed > 120) {
    cout << "Очень быстро" << endl;
} else if (speed > 60) {
    cout << "Быстро" << endl;
} else {
    cout << "Медленно" << endl;
}

Важно

Порядок условий важен. Если в примере выше сначала проверить speed > 60, то при скорости 150 выведется «Быстро» — до проверки speed > 120 программа просто не дойдёт.


8. Вложенные условия#

Внутри одного if или else можно написать ещё один if.

int x, y;
cin >> x >> y;

if (x > 0) {
    if (y > 0) {
        cout << "Первая четверть" << endl;
    } else {
        cout << "Четвёртая четверть" << endl;
    }
} else {
    cout << "Левая полуплоскость" << endl;
}

9. Тернарный оператор ?:#

Короткая запись выбора одного из двух значений.

условие ? значение_если_истина : значение_если_ложь
int a = 7, b = 3;
int bigger = (a > b) ? a : b;                       // 7

cout << (a % 2 == 0 ? "even" : "odd") << endl;      // odd

10. Полезные функции#

max и min#

#include <algorithm>

int a = 5, b = 9, c = 2;
cout << max(a, b) << endl;           // 9
cout << min(a, b) << endl;           // 5
cout << max(max(a, b), c) << endl;   // 9 — максимум из трёх

Модуль числа abs#

#include <cstdlib>   // abs для целых
#include <cmath>     // fabs для дробных

cout << abs(-12) << endl;     // 12
cout << abs(3 - 10) << endl;  // 7 — расстояние между 3 и 10
cout << fabs(-2.5) << endl;   // 2.5

Вывод дробного числа с нужным количеством знаков#

#include <iomanip>

double price = 1234.5;
cout << fixed << setprecision(2) << price << endl;   // 1234.50

Остаток от деления отрицательного числа#

cout << (-5) % 24 << endl;              // -5, а не 19
cout << ((-5) % 24 + 24) % 24 << endl;  // 19

11. Повторить действие несколько раз#

Иногда нужно вывести один и тот же символ k раз.

int k = 4;

// способ 1: цикл
for (int i = 0; i < k; i++) {
    cout << "*";
}
cout << endl;               // ****

// способ 2: строка из k одинаковых символов
cout << string(k, '#') << endl;   // ####

Цикл while повторяет блок, пока условие истинно:

int n = 1;
while (n < 100) {
    n = n * 2;
}
cout << n << endl;   // 128

12. Побитовые операции#

Работают с битами целых чисел. Не путайте с логическими && и ||.

Операция Запись Пример (a = 5, b = 3) Результат
побитовое И & a & b 1
побитовое ИЛИ | a | b 7
побитовое исключающее ИЛИ ^ a ^ b 6
сдвиг влево (умножение на 2ⁿ) << a << 1 10
сдвиг вправо (деление на 2ⁿ) >> a >> 1 2

13. Типичные ошибки#

❌ Неправильно ✅ Правильно
if (x = 5) if (x == 5)
if (1 <= x <= 10) if (1 <= x && x <= 10)
if (x > 70) для «не менее 70» if (x >= 70)
Сначала мягкое условие, потом строгое Сначала строгое, потом мягкое
if (x > 0); { ... } — лишняя ; if (x > 0) { ... }
Вывод подсказок вроде Введите число: Выводить только то, что требуется в задаче

14. Шаблон программы#

#include <iostream>
using namespace std;

int main() {
    // ввод данных

    // проверка условий

    // вывод ответа

    return 0;
}