На сайте в режиме реального времени публикуются решения контестных задач сервиса Codeforces.
Загружайте свои решения( здесь ) прямо на сайте. Подробнее. Жду ваших решений
 

По разделам

 

Задача Proc 59


Используя функции Leng и Area из заданий Proc56 и Proc58, описать
функцию Dist(xP , yP , xA, yA, xB, yB) вещественного типа, находящую
расстояние D(P, AB) от точки P до прямой AB по формуле
D(P, AB) = 2·SP AB/|AB|,
где SP AB — площадь треугольника PAB. С помощью этой функции найти
расстояния от точки P до прямых AB, AC, BC, если даны координаты
точек P, A, B, C.

Код (C/C++)

#include <bits/stdc++.h>

using namespace std;
double func(double px, double py, double x1, double y1, double x2, double y2)
{
    double a = sqrt(pow((px - x1),2) + pow((py - y1),2));
    double b = sqrt(pow((px - x2),2) + pow((py - y2),2));
    double c = sqrt(pow((x1 - x2),2) + pow((y1 - y2),2));
    double p = (a + b + c)/2;
    double s = sqrt(p * (p - a) * (p - b) * (p - c));
    return 2 * s/c;
}
int main()
{
    double x1, y1, x2, y2, x3, y3, px, py;
    cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> px >> py;
    cout << func(px, py, x1, y1, x2, y2) << endl;
    cout << func(px, py, x1, y1, x3, y3) << endl;
    cout << func(px, py, x2, y2, x3, y3) << endl;
    return 0;
}

Код (Python)

import math
import numpy as np
import random

def Leng(xA, yA, xB, yB):
    d = math.sqrt((xA - xB)**2 + (yA - yB)**2)
    return d

def Perim(xA, yA, xB, yB, xC, yC):
    d_AB = Leng(xA, yA, xB, yB)
    d_AC = Leng(xA, yA, xC, yC)
    d_BC = Leng(xB, yB, xC, yC)
    return d_AB + d_AC + d_BC

def Area(xA, yA, xB, yB, xC, yC):
    d_AB = Leng(xA, yA, xB, yB)
    d_AC = Leng(xA, yA, xC, yC)
    d_BC = Leng(xB, yB, xC, yC)
    p = Perim(xA, yA, xB, yB, xC, yC) / 2
    S = math.sqrt(p*(p-d_AB)*(p-d_AC)*(p-d_BC))
    return S

def Dist(xP, yP, xA, yA, xB, yB):
    S_PAB = Area(xA, yA, xB, yB, xP, yP)
    d_AB = Leng(xA, yA, xB, yB)
    d_P_AB = 2 * S_PAB / d_AB
    return d_P_AB

x1,x2,x3,y1,y2,y3 = list(np.random.choice(range(-10, 11), 6))
##x1,x2,x3,y1,y2,y3 = [0,3,0,0,0,4]
while (x3-x1)*(y2-y1) == (y3-y1)*(x2-x1):
    x1,x2,x3,y1,y2,y3 = list(np.random.choice(range(-10, 11), 6))    
x4, y4 = random.sample(range(-10, 11), 2)

A_x = x1
A_y = y1
B_x = x2
B_y = y2
C_x = x3
C_y = y3
P_x = x4
P_y = y4

##A_x = 3
##A_y = 0
##B_x = 0
##B_y = 3
##P_x = 0
##P_y = 0

print("Точка A (x, y): ({0},{1})".format(A_x, A_y))
print("Точка B (x, y): ({0},{1})".format(B_x, B_y))
 

print("Точка P (x, y): ({0},{1})".format(P_x, P_y))
D = Dist(P_x, P_y, A_x, A_y, B_x, B_y)
print("Расстояние от P до AB: ", D)
print()

print("Точка A (x, y): ({0},{1})".format(A_x, A_y))
print("Точка C (x, y): ({0},{1})".format(C_x, C_y))
print("Точка P (x, y): ({0},{1})".format(P_x, P_y))
D = Dist(P_x, P_y, A_x, A_y, C_x, C_y)
print("Расстояние от P до AB: ", D)
print()

print("Точка B (x, y): ({0},{1})".format(B_x, B_y))
print("Точка C (x, y): ({0},{1})".format(C_x, C_y))
print("Точка P (x, y): ({0},{1})".format(P_x, P_y))
D = Dist(P_x, P_y, B_x, B_y, C_x, C_y)
print("Расстояние от P до BC: ", D)
print()
									




Proc. Абрамян
Proc 1 Просмотров: 14
Proc 2 Просмотров: 14
Proc 3 Просмотров: 12
Proc 4 Просмотров: 12
Proc 5 Просмотров: 15
Proc 6 Просмотров: 10
Proc 7 Просмотров: 14
Proc 8 Просмотров: 13
Proc 9 Просмотров: 13
Proc 10 Просмотров: 12
Proc 11 Просмотров: 14
Proc 12 Просмотров: 11
Proc 13 Просмотров: 12
Proc 14 Просмотров: 16
Proc 15 Просмотров: 13
Proc 16 Просмотров: 11
Proc 17 Просмотров: 24
Proc 18 Просмотров: 13
Proc 19 Просмотров: 15
Proc 20 Просмотров: 11
Proc 21 Просмотров: 14
Proc 22 Просмотров: 12
Proc 23 Просмотров: 11
Proc 24 Просмотров: 13
Proc 25 Просмотров: 10
Proc 26 Просмотров: 13
Proc 27 Просмотров: 17
Proc 28 Просмотров: 18
Proc 29 Просмотров: 24
Proc 30 Просмотров: 26
Proc 31 Просмотров: 13
Proc 32 Просмотров: 14
Proc 33 Просмотров: 12
Proc 34 Просмотров: 19
Proc 35 Просмотров: 11
Proc 36 Просмотров: 12
Proc 37 Просмотров: 12
Proc 38 Просмотров: 11
Proc 39 Просмотров: 14
Proc 40 Просмотров: 11
Proc 41 Просмотров: 14
Proc 42 Просмотров: 12
Proc 43 Просмотров: 12
Proc 44 Просмотров: 13
Proc 45 Просмотров: 15
Proc 46 Просмотров: 11
Proc 47 Просмотров: 12
Proc 48 Просмотров: 14
Proc 49 Просмотров: 11
Proc 50 Просмотров: 13
Proc 51 Просмотров: 20
Proc 52 Просмотров: 12
Proc 53 Просмотров: 13
Proc 54 Просмотров: 11
Proc 55 Просмотров: 14
Proc 56 Просмотров: 10
Proc 57 Просмотров: 11
Proc 58 Просмотров: 11
Proc 59 Просмотров: 9
Proc 60 Просмотров: 12

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться