Решение: Анализ условного оператора
Ниже приведена программа, записанная на пяти языках программирования. Программа получает целые числа $s$ и $t$ и выводит «YES», если условие $\neg((s \ge 5) \land (t < 3))$ истинно, и «NO» в противном случае. Было проведено 9 запусков программы, при которых в качестве значений переменных $s$ и $t$ вводились следующие пары чисел: $(2, -2)$; $(5, 3)$; $(14, 1)$; $(-12, 5)$; $(5, -7)$; $(10, 3)$; $(8, 2)$; $(3, 0)$; $(23, 9)$. Сколько было запусков, при которых программа напечатала «NO»?
Решение по шагам
3 шагаПрограмма печатает «NO», когда условие после оператора else выполняется, то есть когда выражение под отрицанием истинно:
$$(s \ge 5) \land (t < 3)$$Проверяем пары чисел. Оба неравенства выполняются для $(14, 1)$, $(5, -7)$ и $(8, 2)$.
Для остальных пар хотя бы одно из неравенств не выполняется, поэтому программа печатает «YES».
Где здесь ошибаются
Учитывают пары, для которых выполняется отрицание исходного условия.
Забывают, что для логического «И» должны одновременно выполняться оба неравенства.
Путают условие $t < 3$ с условием $t \le 3$.