С какими сторонами существует треугольник

Содержание

Задача

Треугольник существует только тогда, когда сумма любых двух его сторон больше третьей.

Дано: a , b , c – стороны предполагаемого треугольника.

Требуется сравнить длину каждого отрезка-стороны с суммой двух других. Если хотя бы в одном случае отрезок окажется больше суммы двух других, то треугольника с такими сторонами не существует.

Решение

Ниже приведены решения задачи на языке программирования Паскаль двумя способами. В первом случае все стороны проверяются в одном операторе if; во втором случае каждое условие проверяется отдельно, а программа содержит вложенные операторы if-else.

Программа 1 (предпочтительный способ решения):

В языке Паскаль логический оператор and имеет приоритет над операторам >, if проверяется, что каждая из сторон меньше суммы других. Если хотя бы одна будет больше, то все логическое выражение вернет ложь ( false ). В таком случае сработает ветка else .

В данном случае существование треугольника проверяется по-этапно. Если первое условие возвращает ложь, то программа переходит к последнему else. Если же первое условие соблюдено, то поток выполнения программы оказывается у вложенного if. Здесь проверяется уже второе условие. Если оно возвращает ложь, то программа переходит к предпоследнему else. Если и второе логическое выражение возвращает истину (true), то программа идет к третьему условию. При его соблюдении выполняется тело самого вложенного оператора if. При его несоблюдении сработает самое вложенное else.

Несмотря на то, что данная программа кажется длиннее, в определенных ситуациях она может выполняться быстрее, чем первая. Здесь если внешнее if возвращает ложь, то остальные логические выражения вообще не проверяются. В первой программе могут и проверяться (это зависит от особенностей языка программирования).

Какими могут быть стороны треугольника? Могут ли стороны треугольника быть равными данным числам? Существует ли треугольник со сторонами той или иной длины? . Рассмотрим конкретные задачи.

Читайте также  Почему парфенова уволили с нтв

1) Существует ли треугольник со сторонами

а) 1 см, 2 см, 3 см;

б) 7 см, 10 см, 12 см?

Согласно неравенству треугольника, длина любой стороны треугольника меньше суммы длин двух других сторон. Проверяем, выполнено ли это условие для каждого отрезка. Для задачи а):

Третье неравенство неверно, следовательно, треугольника со сторонами 1 см, 2 см и 3 см не существует.

Все три условия выполнены, значит, треугольник со сторонами 7 см, 10 см и 12 см существует.

2) Можно ли построить треугольник со сторонами 3 см, 4 см, 8 см?

Проверяем, выполняется ли неравенство треугольника для каждого из отрезков:

Последнее неравенство не выполнено, поэтому треугольник со сторонами 3 см, 4 см и 8 см построить нельзя.

3) Какими могут быть стороны треугольника:

б) 11 дм, 15 дм, 30 дм?

Проверяем выполнение неравенства треугольника для каждой тройки отрезков:

Все три неравенства верны, следовательно, стороны треугольника могут быть равными 5 м, 7 м и10 м.

Третье неравенство не является верным, значит, стороны треугольника не могут быть равными 11 дм, 15 дм и 30 дм.

У треугольника сумма любых двух сторон должна быть больше третьей. Иначе две стороны просто "лягут" на третью и треугольника не получится.

Пользователь вводит длины трех сторон. Программа должна определять, может ли существовать треугольник при таких длинах. Это значит, необходимо сравнить суммы всех пар сторон с оставшейся третьей стороной. Чтобы треугольник существовал, сумма всегда должна быть больше отдельной стороны или, по крайней мере, не меньше, если учитывать так называемый вырожденный треугольник.

Поскольку всего три стороны, то можно составить три варианта сложения двух сторон: a + b , b + c , a + c . Первую сумму сравниваем с оставшейся стороной c , вторую — с a и третью — с b . Если хотя бы в одном случае сумма окажется не больше третьей стороны, то делается вывод, что треугольник не существует.

Читайте также  Пропал звук на металлоискателе

Можно решить задачу сложнее. Если требуется также определить, какая из сторон больше суммы двух других, то решение может быть таким:

Особого смысла использовать переменную flag здесь нет. Она просто позволяет лишний раз не писать в программе строки, информирующие о том, что треугольник не существует. Большего внимания заслуживает использование вложенных конструкций if-else.

Ссылка на основную публикацию
Adblock
detector