Второе решение задачи if12. Вышеприведенное решение задачи нахождения минимального из трех чисел − яркий пример того, как делать НЕЛЬЗЯ. Писать программу таким образом, конечно, можно, но тогда получаются лишние шаги. Сначала приведем пример ПРАВИЛЬНОГО кода (для этого способа решения):
А теперь подсчитаем, сколько раз мы использовали здесь разветвление: 3 раза if и 3 раза else, в то время как в первом решении по 4 раза для каждой ветки (if и else). В чем здесь причина? А секрет в том, что во втором варианте после первого else имеем сразу результат: min3 := c, в то время как в первом решении в том же месте (после первого else) идет ещё одно разветвление. Таким образом, надо так организовывать сравнения, чтобы веток было наименьше.
Третье решение задачи if12 осуществляется с помощью вспомогательной переменной min3, которой сразу присваиваем первое число. Потом мы его сравниваем со вторым и третьим числом, и если min3 оказывается больше, присваиваем ему новое меньшее значение:
Четвертое решение задачи if12 основано на использовании встроенной в PascalABC.Net функции min(a, b), возвращающей минимальное из чисел a и b. Сначала мы находим минимум первых двух чисел, а потом минимум предыдущего, возвращенного функцией, и третьего числа c.
Как видим, здесь условный оператор не понадобился. Подобным образом можно найти минимум четырех, пяти и т. д. чисел, только с увеличением количества резко увеличивается громоздкость выражения. Например, для шести чисел функция вычисления минимального элемента выглядит так:
min(min(min(min(min(a, b), c), d), e), f)
Некто решает эту задачу следующим образом:
Но вот вопрос: если из трех чисел два равны между собой, то которое число находится между двумя другими? Все зависит от того, что понимать под словом "между". Если число b находится межу a и c и удовлетворяет нестрогому неравенству a ≤ b ≤ c, то тогда вышеприведенный код правильный. Действительно, если запустить данную программу и вместо a, b и c ввести соотвеиственно 5, 5 и 9, то программа нам выдаст ответ:
Введите три числа:
5 5 9
Среднее по значению: 5
То есть равные числа воспринимаются программой нормально. Но если рассматривать строгое неравенство: a Второе решение задачи if13 предусматривает отдельный ответ в случае совпадения чисел:
Третье решение задачи if13 аналогично предыдущему, только ветвление происходит немного по-другому:
Четвертое решение задачи if13. Предыдущие два кода довольно громоздки как для задачи такого типа, и поэму возвращаемся к первому решению, куда пропишем проверку равенства чисел − если какие либо два числа совпали, то сообщаем об отсутствии среднего числа, иначе продолжаем выполнять программу. Проверять равенство будем с помощью or − логического "или".
Пятое решение задачи if13 нахождения среднего (в строгом смысле) кардинально отличается от предыдущих. Здесь используется тот факт, что если число b находится между a и c, то числа (a — b) и (b — c) − одного знака, а поэтому их произведение положительно.
Наконец, шестое решение задачи if13:
Следующая программа нахождения наибольшего и наименьшего значений не очень эффективна, но четко показывает направление мысли:
Второе решение задачи if14 отличается простотой: сначала мы минимуму и максимуму присваиваем первое число A, а потом число B сравниваем с предыдущим минимумом и максимумом. Если B меньше минимума, то минимумом становится B; если B больше максимума, то максимумом становится B. Аналогично проверяем число C.
Третье решение задачи if14 подходит для среды PascalABC.Net, так как использует готовые функции минимума и максимума (смотрите также решение выше).
Здесь описан метод исключения: сначала находим минимальное из трех чисел, а потом находим сумму оставшихся, которая и будет суммой больших двух чисел:
Найти наибольшее число из трех. Если числа равны, то вывести любое из них.
Входные данные
В единственной строке входного файла INPUT.TXT записано три числа через пробел. Все числа целые, не меньше -10000 и не больше 10000.
Выходные данные
В файл OUTPUT.TXT выведите единственное число.
Пример
При копировании материалов обратная ссылка обязательна
Ответ
Проверено экспертом
// PascalABC.NET 3.4.2, сборка 1881 от 19.11.2018
// Внимание! Если программа не работает, обновите версию!
Пример
7.23 4.1 7.23
- Комментарии
- Отметить нарушение
Не тот ответ, который тебе нужен?
Что ты хочешь узнать?
Самые новые вопросы
- kirill792001
- Информатика
- DimaNoJIk
- Информатика
- АнастасияВесна
- Информатика
- Annetaaazajceva
- Информатика
- kolya171103
- Информатика
C̅ 2. Z ^ (A V B) → A̅ ^ ¬ (B ^ C) ^ — И V — ИЛИ A̅ — НЕ А ¬ — НЕ
«>