Условие :
Вычислите какой минимальное количество команд ветвления необходимо использовать для того, чтобы запрограммировать [latex]n[/latex] вариантов поведения. Докажите свою оценку.
Решение :
Команда ветвления (конструкция «if {} else {}» или тернарный оператор «?» ) разделяет код программы с какого-то момента ровно на 2 независимых алгоритма (даже при отсутствии блока «else {}», так как программа продолжает выполняться в зависимости от того, сработал блок «if {}», или нет). Таким образом, если понимать под «вариантов поведения» изолированный блок кода, выполняемый при совпадении набора условий, чтобы разбить программу на [latex]n[/latex] таких независимых вариантов, нужно использовать ровно [latex]n — 1[/latex] условную операцию.
Тесты :
Входные данные | 12 | 7 | 1 | 0 |
Выходные данные | 11 | 6 | 0 | Ошибка ввода |
Код :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <iostream> using namespace std; int main() { int n; cin >> n; if (n > 0) cout << n - 1 << endl; else cout << "Ошибка ввода" << endl; return 0; } |
Ссылка на рабочий код:
Несложная задача, но важные размышления. Вариант поведения программы это путь от входа в программу до выхода из неё. Иногда этот путь называют протоколом работы программы. В линейной программе такой путь только один. Каждый разумный условный оператор добавляет ещё один вариант пути.