Тип 6 № 10955 
Программа с условным оператором. Задания для подготовки
i
Ниже приведена программа, записанная на пяти языках программирования.
| Бейсик | Python |
|---|
DIM s, t AS INTEGER INPUT s INPUT t IF s < 7 OR t > 5 THEN PRINT ‘YES’ ELSE PRINT ‘NO’ ENDIF | s = int(input()) t = int(input()) if s < 7 or t > 5: print("YES") else: print("NO") |
| Паскаль | Алгоритмический язык |
|---|
var s, t: integer; begin readln(s); readln(t); if (s < 7) or (t > 5) then writeln('YES') else writeln('NO') end. | алг нач цел s, t ввод s ввод t если s < 7 или t > 5 то вывод "YES" иначе вывод "NO" все кон |
| С++ |
|---|
#include <iostream> using namespace std; int main() { int s, t; cin >> s; cin >> t; if (s < 7 || t > 5) cout << "YES"; else cout << "NO"; return 0; } |
Было проведено 9 запусков программы, при которых в качестве значений переменных s и t вводились следующие пары чисел:
(9, 5); (11, 2); (4, 5); (7, –2); (4, 4); (7, 7); (1, –1); (3, 9); (2, 2).
Сколько было запусков, при которых программа напечатала «NO»?
Решение. Заметим, что программа напечатает «NO», если переменная s будет больше или равна 7, а переменная t будет меньше или равна 5. Значит, было 3 запуска, при которых программа напечатала «NO». В качестве значений переменных s и t в этих случаях вводились следующие пары чисел:
(9, 5); (11, 2); (7, –2).
Ответ: 3.
Приведем общий способ решения подобных задач.
Выпишем все вводимые пары чисел, для каждой пары укажем, выполняются ли условия s < 7 и t > 5. Заметим, что программа напечатает «YES», если выполнено хотя бы одно из этих условий (то есть хотя бы в одной колонке есть слово «ДА»), а в противном случае напечатает «NO». Для каждой пары чисел запишем, что напечатает программа:
| вводимые значения | s < 7 | t > 5 | вывод |
|---|
| (9,5) | НЕТ | НЕТ | NO |
| (11,2) | НЕТ | НЕТ | NO |
| (4,5) | ДА | НЕТ | YES |
| (7,-2) | НЕТ | НЕТ | NO |
| (4,4) | ДА | НЕТ | YES |
| (7,7) | НЕТ | ДА | YES |
| (1,–1) | ДА | НЕТ | YES |
| (3,9) | ДА | ДА | YES |
| (2,2) | ДА | НЕТ | YES |
Заметим, что только для трех пар программа напечатает «NO».
Примечание.
Заметим, что программа напечатает «NO», если указанное в программе условие не будет выполнено. Следовательно, можно заменить указанное в программе условие на противоположное и выбрать те пары, для которых оно выполняется. Напомним, что замена условия на противоположное осуществляется по следующим правилам:
| исходное условие | противоположное условие |
|---|
| x< N | x ≥ N |
| x ≤ N | x > N |
| x>N | x ≤ N |
| x ≥ N | x < N |
| A И В | (НЕ А) ИЛИ (НЕ В) |
| А ИЛИ В | (НЕ А) И (НЕ В) |
Здесь x — некоторая переменная, N — число, А и B — условия, указанные в предыдущих строках таблицы. Так, приведенное в программе выражение (s < 7) ИЛИ (t > 5) должно быть заменено на (НЕ (s < 7)) И (НЕ (t > 5)), то есть (s ≥ 7) И (t ≤ 5)
Приведем другое решение на языке Python.
def f(s, t):
if s < 7 or t > 5:
return 0
else:
return 1
a = ((9, 5), (11, 2), (4, 5), (7, -2), (4, 4), (7, 7), (1, -1), (3, 9), (2, 2))
kol = 0
for i in range(9):
kol += f(a[i][0], a[i][1])
print(kol)
Ответ: 3