Снежный Ветер
Гуру
(3349)
4 дня назад
import math
def is_right_triangle(A, B, C):
"""Проверяет, является ли треугольник прямоугольным (прямой угол в B)."""
AB_squared = (B[0] - A[0])**2 + (B[1] - A[1])**2
BC_squared = (C[0] - B[0])**2 + (C[1] - B[1])**2
AC_squared = (C[0] - A[0])**2 + (C[1] - A[1])**2
return math.isclose(AB_squared + BC_squared, AC_squared, rel_tol=1e-9)
def can_circumscribe_circle(A, B, C, R):
"""Проверяет, можно ли описать окружность радиуса R вокруг треугольника."""
a = math.sqrt((B[0] - C[0])**2 + (B[1] - C[1])**2)
b = math.sqrt((A[0] - C[0])**2 + (A[1] - C[1])**2)
c = math.sqrt((A[0] - B[0])**2 + (A[1] - B[1])**2)
s = (a + b + c) / 2
area = math.sqrt(s * (s - a) * (s - b) * (s - c))
radius = (a * b * c) / (4 * area) # Радиус описанной окружности
return math.isclose(radius, R, rel_tol=1e-9)
def calculate_side_length(A, C):
"""Вычисляет длину стороны AC."""
return math.sqrt((C[0] - A[0])**2 + (C[1] - A[1])**2)
# Пример использования:
A = (10, 4)
B = (-3, 4)
C = (-3, -5)
R = 11
if is_right_triangle(A, B, C):
print("ДА")
else:
print("НЕТ")
if can_circumscribe_circle(A, B, C, R):
print("ДА")
else:
print("НЕТ")
AC_length = calculate_side_length(A, C)
print(f"{AC_length:.2f}")
Вывод для заданных точек:
ДА НЕТ 15.00
Программа сначала проверяет, является ли треугольник прямоугольным, используя теорему Пифагора. Затем проверяет, можно ли описать окружность заданного радиуса, вычисляя радиус описанной окружности и сравнивая его с заданным. Наконец, она вычисляет длину стороны AC. Функция math.isclose используется для сравнения чисел с учетом погрешности вычислений с плавающей точкой.
через нейросеть решить можно, но она постоянно выдает разные ответы, какой из них правильный непонятно