По заданным координатам вершин треугольника вычислить длины его медиан

Есть код, но он не проходит такой тест:

  • x1=3
  • y1=0
  • x2=0
  • y2=4
  • x3=0
  • y3=0
  • m1= 3.605551275463989 (должно быть 4.27)
  • m2= 4.0 (должно 2.5)
  • m3= 4.272001872658765 (только это верно)

Вроде нужно В функцию med передать не четыре переменных, а шесть. Добавить x3, y3. В вызова функции тоже должно быть шесть переменных. Но сделать толково не получается

def med(x1,y1,x2,y2):
    import math
    med=math.sqrt((x1-(x2+x3)/2)**2+(y1-(y2+y3)/2)**2)
    return med

x1=float(int(input("x1=" )))
y1=float(int(input("y1=" )))
x2=float(int(input("x2=" )))
y2=float(int(input("y2=" )))
x3=float(int(input("x3=" )))
y3=float(int(input("y3=" )))

print("m1=",med(x1, y1, x2, y2))
print("m2=",med(x2, y2, x3, y3))
print("m3=",med(x2, y2, x1, y1))

Ответы (1 шт):

Автор решения: Zhihar

А в чем проблема то?

В Википедии даётся формула

введите сюда описание изображения

дальше ее всего лишь надо реализовать:

def med(p1, p2, p3):
    a = (p1[0] - p2[0])**2 + (p1[1] - p2[1])**2
    b = (p3[0] - p2[0])**2 + (p3[1] - p2[1])**2
    c = (p3[0] - p1[0])**2 + (p3[1] - p1[1])**2

    return math.sqrt(2*a + 2*b - c) / 2

и вызывать

med((x1, y1), (x2, y2), (x3, y3))

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

→ Ссылка