Даны три числа найти наибольшее из них

Второе решение задачи 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, так как использует готовые функции минимума и максимума (смотрите также решение выше).

Здесь описан метод исключения: сначала находим минимальное из трех чисел, а потом находим сумму оставшихся, которая и будет суммой больших двух чисел:

Найти наибольшее число из трех. Если числа равны, то вывести любое из них.

Входные данные

Читайте также:  Как выключить все параметры dynamic super resolution

В единственной строке входного файла INPUT.TXT записано три числа через пробел. Все числа целые, не меньше -10000 и не больше 10000.

Выходные данные

В файл OUTPUT.TXT выведите единственное число.

Пример

Решение задачи на Паскале.

Как видно из блок-схемы приведенной ниже, использовать дополнительную переменную нет никакой нужды. Отказавшись от полного ветвления при проверке первого условия, удалось уменьшить и код программы. Обратите внимание, что для использования неполного ветвления надо проверять условие a , а не a>b .

Решение на Паскале.

В книге С. Окулова "Основы программирования " , для решения этой задачи предлагается использовать составные условия. Вот как будет выглядеть текст программы в этом случае:

Копилка Рабочие программы Проекты MS Office Презентации Открытые уроки Экзаменационные билеты Элективные курсы Бесплатный soft Инструкции по ТБ
Читайте также:  Можно ли обновлять прошитый xbox 360

При копировании материалов обратная ссылка обязательна

Ответ

Проверено экспертом

// 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̅ — НЕ А ¬ — НЕ

«>

Оцените статью
Добавить комментарий

Adblock
detector