<gh_stars>1-10
# Програма определяет длину сторон треугольника.
# Находит биссектрису наибольшего угла
# Определяет является ли треугольник прямоугольным.
# Определяет находится ли точка внутри треугольника
# Находит расстояние до ближайшей стороны. 
# x1, y1 - координаты вершины A
# x2, y2 - координаты вершины B
# x3, y3 - координаты вершины C
# x0, y0 - координаты точки
# AB, BC, AC - стороны треугольника
# b - большая сторона
# s - средняя сторона
# m -  меньшая сторона
# L - длина биссектрисы
# r1, r2, r3 - векторные и псевдоскалярные произведения
# h1, h2, h3 - высота из точки на AB, BC, AC

print('Значения вводятся через запятую')
x1, y1 = map(float, input('Введите координаты 1 точки: ').split(',')) #A
x2, y2 = map(float, input('Введите координаты 2 точки: ').split(',')) #B
x3, y3 = map(float, input('Введите координаты 3 точки: ').split(',')) #C

from math import sqrt

AB = sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
BC = sqrt((x3 - x2) ** 2 + (y3 - y2) ** 2)
AC = sqrt((x1 - x3) ** 2 + (y1 - y3) ** 2) 
print()

if (AC * BC * AC != 0) and \
   ((y1-y2) * x3 + (x2-x1) * y3 + (x1*y2 - x2*y1) != 0):
    print('Длина AB: ','{:.5g}'.format(AB))
    print('Длина BC: ','{:.5g}'.format(BC))
    print('Длина AC: ','{:.5g}'.format(AC))

    b = max(AB, BC, AC)
    m = min(AB, BC, AC)
    s = AB + BC + AC - b - m
    L = (sqrt(s * m *(m + s + b)*(m + s - b))) / (s + m)
    print('Длина биссектриссы большего угла: ','{:.5}'.format(L))

    if abs((b*b) - (m*m + s*s)) <= 0.1 :
        print('Этот треугольник является прямоугольным.')
    else:
        print('Этот треугольник не является прямоугольным.')

    print()
    x0, y0 = map(float,input('Введите координаты точки: ').split(','))
    if (min(x1,x2,x3) <= x0 <= max(x1,x2,x3)) and \
       (min(y1,y2,y3) <= y0 <= max(y1,y2,y3)):
        r1 = (x1 - x0) * (y2 - y1) - (x2 - x1) * (y1 - y0)
        r2 = (x2 - x0) * (y3 - y2) - (x3 - x2) * (y2 - y0)
        r3 = (x3 - x0) * (y1 - y3) - (x1 - x3) * (y3 - y0)
        if (r1 * r2 * r3 == 0):
            print('Точка лежит на стороне треугольника.')
        elif (r1 == abs(r1)) == (r2 == abs(r2)) == (r3 == abs(r3)):
            print('Точка входит в треугольник.')
            h1 = abs((y1-y2)*x0 + (x2-x1)*y0 + (x1*y2 - x2*y1))\
                /sqrt((y1-y2)**2 + (x2-x1)**2)
            h2 = abs((y3-y2)*x0 + (x2-x3)*y0 + (x3*y2 - x2*y3))\
                 /sqrt((y3-y2)**2 + (x2-x3)**2)
            h3 = abs((y1-y3)*x0 + (x3-x1)*y0 + (x1*y3 - x3*y1))\
                 /sqrt((y1-y3)**2 + (x3-x1)**2)
            print('Расстояние до ближайшей стороны: ', \
                  '{:.5}'.format(min(h1, h2, h3)))
        else:
            print('Точка не входит в треугольник.')
    else:
        print('Точка не входит в треугольник.')
else:
    if (x1 == x2 == x3) and (y1 == y2 == y3):
        print('Треугольник не существует. Все вершины лежат на одной точке.')
    elif AB * BC * AC == 0:
        print('Треугольник не существует. Две точки совпадают.')
    else:
        print('Треугольник не существует т.к. точки лежат на одной прямой.')

# Програма определяет длину сторон треугольника.
# Находит биссектрису наибольшего угла
# Определяет является ли треугольник прямоугольным.
# Определяет находится ли точка внутри треугольника
# Находит расстояние до ближайшей стороны. 
# x1, y1 - координаты вершины A
# x2, y2 - координаты вершины B
# x3, y3 - координаты вершины C
# x0, y0 - координаты точки
# AB, BC, AC - стороны треугольника
# b - большая сторона
# s - средняя сторона
# m -  меньшая сторона
# L - длина биссектрисы
# r1, r2, r3 - векторные и псевдоскалярные произведения
# h1, h2, h3 - высота из точки на AB, BC, AC

print('Значения вводятся через запятую')
x1, y1 = map(float, input('Введите координаты 1 точки: ').split(',')) #A
x2, y2 = map(float, input('Введите координаты 2 точки: ').split(',')) #B
x3, y3 = map(float, input('Введите координаты 3 точки: ').split(',')) #C

from math import sqrt

AB = sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
BC = sqrt((x3 - x2) ** 2 + (y3 - y2) ** 2)
AC = sqrt((x1 - x3) ** 2 + (y1 - y3) ** 2) 
print()

if (AC * BC * AC != 0) and \
   ((y1-y2) * x3 + (x2-x1) * y3 + (x1*y2 - x2*y1) != 0):
    print('Длина AB: ','{:.5g}'.format(AB))
    print('Длина BC: ','{:.5g}'.format(BC))
    print('Длина AC: ','{:.5g}'.format(AC))

    b = max(AB, BC, AC)
    m = min(AB, BC, AC)
    s = AB + BC + AC - b - m
    L = (sqrt(s * m *(m + s + b)*(m + s - b))) / (s + m)
    print('Длина биссектриссы большего угла: ','{:.5}'.format(L))

    if abs((b*b) - (m*m + s*s)) <= 0.1 :
        print('Этот треугольник является прямоугольным.')
    else:
        print('Этот треугольник не является прямоугольным.')

    print()
    x0, y0 = map(float,input('Введите координаты точки: ').split(','))
    if (min(x1,x2,x3) <= x0 <= max(x1,x2,x3)) and \
       (min(y1,y2,y3) <= y0 <= max(y1,y2,y3)):
        r1 = (x1 - x0) * (y2 - y1) - (x2 - x1) * (y1 - y0)
        r2 = (x2 - x0) * (y3 - y2) - (x3 - x2) * (y2 - y0)
        r3 = (x3 - x0) * (y1 - y3) - (x1 - x3) * (y3 - y0)
        if (r1 * r2 * r3 == 0):
            print('Точка лежит на стороне треугольника.')
        elif (r1 == abs(r1)) == (r2 == abs(r2)) == (r3 == abs(r3)):
            print('Точка входит в треугольник.')
            h1 = abs((y1-y2)*x0 + (x2-x1)*y0 + (x1*y2 - x2*y1))\
                /sqrt((y1-y2)**2 + (x2-x1)**2)
            h2 = abs((y3-y2)*x0 + (x2-x3)*y0 + (x3*y2 - x2*y3))\
                 /sqrt((y3-y2)**2 + (x2-x3)**2)
            h3 = abs((y1-y3)*x0 + (x3-x1)*y0 + (x1*y3 - x3*y1))\
                 /sqrt((y1-y3)**2 + (x3-x1)**2)
            print('Расстояние до ближайшей стороны: ', \
                  '{:.5}'.format(min(h1, h2, h3)))
        else:
            print('Точка не входит в треугольник.')
    else:
        print('Точка не входит в треугольник.')
else:
    if (x1 == x2 == x3) and (y1 == y2 == y3):
        print('Треугольник не существует. Все вершины лежат на одной точке.')
    elif AB * BC * AC == 0:
        print('Треугольник не существует. Две точки совпадают.')
    else:
        print('Треугольник не существует т.к. точки лежат на одной прямой.')
# Програма определяет длину сторон треугольника. # Находит биссектрису наибольшего угла # Определяет является ли треугольник прямоугольным. # Определяет находится ли точка внутри треугольника # Находит расстояние до ближайшей стороны. # x1, y1 - координаты вершины A # x2, y2 - координаты вершины B # x3, y3 - координаты вершины C # x0, y0 - координаты точки # AB, BC, AC - стороны треугольника # b - большая сторона # s - средняя сторона # m -  меньшая сторона # L - длина биссектрисы # r1, r2, r3 - векторные и псевдоскалярные произведения # h1, h2, h3 - высота из точки на AB, BC, AC #A #B #C