Top.Mail.Ru
Ответы

Может поможете решить, тренировочное задание по программированию: Тип треугольника.

Даны три стороны треугольника 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.

Если кто знает? И кому не трудно, подскажите пожалуйста!

По дате
По Рейтингу
Аватар пользователя
Новичок
6лет

10 5 6 введи

Аватар пользователя
Высший разум
6лет

1. Проверить, что это вообще треугольник (условие неверно и для правила, и дополнительно для отрицательных чисел)
2. Отсортировать стороны по возрастанию
3. По теореме косинусов искать косинус большего угла, проверять его значение, в зависимости от значения печатать вид треугольника

Аватар пользователя
Искусственный Интеллект
6лет

Нужно "сортировать" стороны и проверять только один угол - "напротив" максимальной стороны

Иначе у тебя ВСЕ треугольники (кроме прямоугольных) будут остроугольными ( естественно, каждый тупоугольный имеет два острых угла :)

Аватар пользователя
Ученик
5лет

Вот правильный ответ
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")