Может поможете решить, тренировочное задание по программированию: Тип треугольника.
Даны три стороны треугольника a,b,c. Определите тип треугольника с заданными сторонами. Выведите одно из четырех слов: rectangular для прямоугольного треугольника, acute для остроугольного треугольника, obtuse для тупоугольного треугольника или impossible, если треугольника с такими сторонами не существует (считаем, что вырожденный треугольник тоже невозможен).
Формат ввода
Вводятся три целых числа.
Формат вывода
Выведите ответ на задачу.
Тест 1
Входные данные:
3
4
5
Вывод программы:
rectangular
Тест 2
Входные данные:
3
5
4
Вывод программы:
rectangular
Я отправил такое решение:
a = int(input())
b = int(input())
c = int(input())
if(a >= b + c)or(b >= a + c)or(c >= a + b)or(0 == a + b + c):
print('impossible')
elif c ** 2 == a ** 2 + b ** 2:
print('rectangular')
elif a ** 2 == c ** 2 + b ** 2:
print('rectangular')
elif b ** 2 == c ** 2 + a ** 2:
print('rectangular')
elif c ** 2 < a ** 2 + b ** 2:
print('acute')
elif a ** 2 < c ** 2 + b ** 2:
print('acute')
elif b ** 2 < a ** 2 + c ** 2:
print('acute')
else:
print('obtuse')
прислали ответ:
Результат
Зачет?
50/100Оценка: 50 из 100
Нет
Test 13
Wrong answer.
Если кто знает? И кому не трудно, подскажите пожалуйста!
10 5 6 введи
1. Проверить, что это вообще треугольник (условие неверно и для правила, и дополнительно для отрицательных чисел)
2. Отсортировать стороны по возрастанию
3. По теореме косинусов искать косинус большего угла, проверять его значение, в зависимости от значения печатать вид треугольника
Нужно "сортировать" стороны и проверять только один угол - "напротив" максимальной стороны
Иначе у тебя ВСЕ треугольники (кроме прямоугольных) будут остроугольными ( естественно, каждый тупоугольный имеет два острых угла :)
Вот правильный ответ
a = int(input())
b = int(input())
c = int(input())
a, b, c = sorted([a, b, c])
if (a >= b + c) or (b >= a + c) or (c >= a + b) or (0 == a + b + c):
print('impossible')
elif c * c < a * a + b * b:
print("acute")
elif c * c == a * a + b * b:
print("rectangular")
elif c * c > a * a + b * b:
print("obtuse")
else:
print("impossible")