Заданы длины трех отрезков a, b, c. Необходимо определить, можно ли из них составить треугольник. В случае утвердительного ответа определить его тип: остроугольный, прямоугольный или тупоугольный.
Вход. Три целых числа a, b, c – длины трех отрезков.
Выход. Строка, содержащая информацию о треугольнике: “ACUTE”, если он остроугольный, “RIGHT” если прямоугольный и “OBTUSE” если тупоугольный. Если из трех отрезков составить треугольник нельзя, то вывести “NONE”.
Из трех отрезков a, b, c можно составить треугольник, если выполняется неравенство треугольника: сумма длин двух любых сторон треугольника строго больше длины третьей.
Из теоремы Пифагора следует, что треугольник со сторонами a, b, c является прямоугольным, если выполняется одно из следующих равенств:
a 2 = b 2 + c 2 или b 2 = a 2 + c 2 или c 2 = a 2 + b 2
Треугольник будет остроугольным, если квадрат каждой стороны строго меньше суммы квадратов двух других сторон. То есть одновременно выполняется три неравенства:
a 2 b 2 + c 2 , b 2 a 2 + c 2 , c 2 a 2 + b 2
Треугольник является тупоугольным, если существует такая сторона, квадрат которой строго больше суммы квадратов двух других сторон. То есть выполняется одно из трех неравенств:
a 2 > b 2 + c 2 или b 2 > a 2 + c 2 или c 2 > a 2 + b 2
Условие тупоугольности можно не проверять: если треугольник не является ни остроугольным, ни прямоугольным, то он является тупоугольным. Для вывода результата воспользуемся типом string .
if ((a >= b + c) or (b >= a + c) or (c >= a + b))
then res := ‘NONE’ else
if ((a*a = b*b + c*c) or (b*b = a*a + c*c) or (c*c = a*a + b*b))
then res := ‘RIGHT’ else
then res := ‘ACUTE’ else
Задача решена, но имеет один недостаток. При проверке типа треугольника приходится каждый раз проверять три условия: в каждом из условных операторов if стоит три выражения. Можно сделать так, что в каждом условном операторе будет стоять лишь одно условие. Подумайте, как это сделать?
Ответ на вопрос дает сортировка. Отсортируем по возрастанию длины исходных отрезков. Пусть у нас далее имеют место неравенства: a £ b £ c. Тогда для проверки неравенства треугольника достаточно проверить лишь a + b > c, так как оба других неравенства b + c > a и a + c > b выполняются. Для проверки прямоугольности достаточно проверить только равенство c 2 = a 2 + b 2 , так как при a £ b £ c гипотенузой может быть только сторона c. В случае тупоугольности наибольшей стороной может быть только c, поэтому для существования тупого угла в треугольнике достаточно выполнение условия c 2 > a 2 + b 2 . Треугольник будет остроугольным, если c 2 a 2 + b 2 .
Например, в языке Си, отсортировать три числа можно так:
Язык Паскаль вообще не имеет функций сортировки. Здесь, уже на элементарной задаче, мы столкнулись с бедностью языка Паскаль. Реализовать сортировку непосредственно операциями сравнения в этой задаче можно, так как число переменных не велико. Если бы их было больше – требовалось бы заводить массив и уже писать один из классических алгоритмов сортировки.
Если мы сможем эффективно отсортировать числа a, b, c, то программа примет вид:
if c >= a + b then res := ‘NONE’ else
if c*c = a*a + b*b then res := ‘RIGHT’ else
Видео:Зачем нужен треугольник Паскаля (спойлер: для формул сокращённого умножения)Скачать
Как решить задачу с определением трех сторон треугольника?
Задача:
Определите тип треугольника (остроугольный, тупоугольный, прямоугольный) с данными сторонами.
Необходимо вывести одно из слов: «right» для прямоугольного треугольника, «acute» для остроугольного треугольника, «obtuse» для тупоугольного треугольника или «impossible», если входные числа не образуют треугольник.
Чем же плох мой способ?
a = int(input())
b = int(input())
c = int(input())
if pow(c, 2) == pow(a, 2) + pow(b, 2):
print(‘right’)
elif pow(b, 1) + pow(c, 2) — pow(a, 2) > 0:
print(‘acute’)
elif pow(a, 2) + pow(b, 2) Вопрос задан более трёх лет назад
Я бы использовал теорему косинусов
Я бы использовал теорему косинусов, нашел бы углы, а потом уже делал вывод
Не знаю, что здесь происходит, но размерности здесь не сходятся
pow(b, 1) + pow(c, 2) — pow(a, 2) > 0
Видео:4.3 Треугольник Паскаля 1. "Поколение Python": курс для продвинутых. Курс StepikСкачать
Определить возможность существования треугольника по сторонам
Задача
Треугольник существует только тогда, когда сумма любых двух его сторон больше третьей.
Дано: a , b , c – стороны предполагаемого треугольника.
Требуется сравнить длину каждого отрезка-стороны с суммой двух других. Если хотя бы в одном случае отрезок окажется больше суммы двух других, то треугольника с такими сторонами не существует.
Решение
Ниже приведены решения задачи на языке программирования Паскаль двумя способами. В первом случае все стороны проверяются в одном операторе if; во втором случае каждое условие проверяется отдельно, а программа содержит вложенные операторы if-else.
Программа 1 (предпочтительный способ решения):
В языке Паскаль логический оператор and имеет приоритет над операторам >, if проверяется, что каждая из сторон меньше суммы других. Если хотя бы одна будет больше, то все логическое выражение вернет ложь ( false ). В таком случае сработает ветка else .
В данном случае существование треугольника проверяется по-этапно. Если первое условие возвращает ложь, то программа переходит к последнему else. Если же первое условие соблюдено, то поток выполнения программы оказывается у вложенного if. Здесь проверяется уже второе условие. Если оно возвращает ложь, то программа переходит к предпоследнему else. Если и второе логическое выражение возвращает истину (true), то программа идет к третьему условию. При его соблюдении выполняется тело самого вложенного оператора if. При его несоблюдении сработает самое вложенное else.
Несмотря на то, что данная программа кажется длиннее, в определенных ситуациях она может выполняться быстрее, чем первая. Здесь если внешнее if возвращает ложь, то остальные логические выражения вообще не проверяются. В первой программе могут и проверяться (это зависит от особенностей языка программирования).
🎬 Видео
Несколько красивых свойств треугольника ПаскаляСкачать
Треугольник Паскаля Python. Коэффициенты для Бинома НьютонаСкачать
Числа сочетаний. Треугольник Паскаля | Ботай со мной #059 | Борис Трушин |Скачать
Треугольник ПаскаляСкачать
Треугольник Паскаль. Как применять на простом примере!Скачать
Треугольник ПаскаляСкачать
#26. Треугольник Паскаля как пример работы вложенных циклов | Python для начинающихСкачать
Задача на Паскале: площадь прямоугольного треугольникаСкачать
Удивительный треугольник Паскаля | Лекции по математике – Яков Ерусалимский | Научпоп | НаукаPROСкачать
БИНОМ Ньютона | треугольник ПаскаляСкачать
Математические секреты треугольника ПаскаляСкачать
Треугольник Паскаля на PythonСкачать
Математика это не ИсламСкачать
Вычисление площади и периметра прямоугольника в ПаскальСкачать
Задача на подобие треугольников. А ты сможешь решить? | TutorOnline | МатематикаСкачать
39 Сумма чисел строки треугольника ПаскаляСкачать
Как треугольник Паскаля поможет умножать без калькулятораСкачать
Java - Структура - Треугольник ПаскаляСкачать