Как решить задачу с определением трех сторон треугольника? Задача:
Определите тип треугольника (остроугольный, тупоугольный, прямоугольный) с данными сторонами.
Необходимо вывести одно из слов: "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(c, 2):
print('obtuse')
elif (a + b) <= c or (a + b) <= b or (c + b)

21 Авг 2019 в 06:04
1 278 +1
0
Ответы
1

В вашем коде ошибка заключается в неправильной проверке условия на исполнение неравенства треугольника. В конце кода нельзя сравнивать общую сумму сторон (a + b) или (c + b) с одной из сторон, так как это не дает правильного результата.

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

if a + b <= c or a + c <= b or b + c <= a:
print('impossible')
else:
if pow(c, 2) == pow(a, 2) + pow(b, 2):
print('right')
elif pow(c, 2) > pow(a, 2) + pow(b, 2):
print('obtuse')
else:
print('acute')

Вот правильный код, который должен работать корректно для всех входных данных.Будьте проще, менее длинные фрагменты кода часто более читаемы.

20 Апр 2024 в 13:24
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир