По разделам

 

Решение задачи Proc 60


Используя функцию Dist из задания Proc59, описать процедуру
Heights(xA, yA, xB, yB, xC, yC, hA, hB, hC), находящую высоты hA, hB, hC треугольника ABC (выходные параметры), проведенные соответственно из
вершин A, B, C (их координаты являются входными параметрами). С помощью этой процедуры найти высоты треугольников ABC, ABD, ACD,
если даны координаты точек A, B, C, D.

Код (C/C++)

#include <bits/stdc++.h>

using namespace std;
double func(double x1, double y1, double x2, double y2, double x3, double y3)
{
    double a = sqrt(pow((x1 - x2),2) + pow((y1 - y2),2));
    double b = sqrt(pow((x1 - x3),2) + pow((y1 - y3),2));
    double c = sqrt(pow((x2 - x3),2) + pow((y2 - y3),2));
    double p = (a + b + c)/2;
    double ha = (2 * sqrt(p * (p - a) * (p - b) * (p - c)))/b;
    double hb = (2 * sqrt(p * (p - a) * (p - b) * (p - c)))/c;
    double hc = (2 * sqrt(p * (p - a) * (p - b) * (p - c)))/a;
    cout << ha << " " << hb << " " << hc <<  endl;
}
int main()
{
    double x1, y1, x2, y2, x3, y3, x4, y4;
    cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x4 >> y4;
    func(x1, y1, x2, y2, x3, y3);
    func(x1, y1, x2, y2, x4, y4);
    func(x1, y1, x3, y3, x4, y4);
    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

def Heights(xA, yA, xB, yB, xC, yC):
    h_A = Dist(xA, yA, xB, yB, xC, yC)
    h_B = Dist(xB, yB, xA, yA, xC, yC)
    h_C = Dist(xC, yC, xA, yA, xB, yB)
    return [h_A, h_B, h_C]

    
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))    

A_x = x1
A_y = y1
B_x = x2
B_y = y2
C_x = x3
C_y = y3

##A_x = 0
##A_y = 0
##B_x = 6
##B_y = 0
##C_x = 3
##C_y = 4

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

 

print("Точка C (x, y): ({0},{1})".format(C_x, C_y))
hA, hB, hC = Heights(A_x, B_y, B_x, B_y, C_x, C_y)
print("Высота hA: ", hA)
print("Высота hB: ", hB)
print("Высота hC: ", hC)
									




Proc. Абрамян
Proc 1 Просмотров: 6512
Proc 2 Просмотров: 5032
Proc 3 Просмотров: 5116
Proc 4 Просмотров: 4303
Proc 5 Просмотров: 3362
Proc 6 Просмотров: 4607
Proc 7 Просмотров: 3893
Proc 8 Просмотров: 2985
Proc 9 Просмотров: 3123
Proc 10 Просмотров: 2884
Proc 11 Просмотров: 2984
Proc 12 Просмотров: 2183
Proc 13 Просмотров: 2423
Proc 14 Просмотров: 2655
Proc 15 Просмотров: 1865
Proc 16 Просмотров: 2841
Proc 17 Просмотров: 2485
Proc 18 Просмотров: 2406
Proc 19 Просмотров: 2325
Proc 20 Просмотров: 3171
Proc 21 Просмотров: 3300
Proc 22 Просмотров: 2401
Proc 23 Просмотров: 2398
Proc 24 Просмотров: 1661
Proc 25 Просмотров: 2033
Proc 26 Просмотров: 1806
Proc 27 Просмотров: 2008
Proc 28 Просмотров: 1737
Proc 29 Просмотров: 1915
Proc 30 Просмотров: 2445
Proc 31 Просмотров: 1669
Proc 32 Просмотров: 1221
Proc 33 Просмотров: 1250
Proc 34 Просмотров: 1672
Proc 35 Просмотров: 1154
Proc 36 Просмотров: 1613
Proc 37 Просмотров: 1474
Proc 38 Просмотров: 1194
Proc 39 Просмотров: 1098
Proc 40 Просмотров: 1831
Proc 41 Просмотров: 1897
Proc 42 Просмотров: 1149
Proc 43 Просмотров: 1117
Proc 44 Просмотров: 998
Proc 45 Просмотров: 1129
Proc 46 Просмотров: 999
Proc 47 Просмотров: 1061
Proc 48 Просмотров: 811
Proc 49 Просмотров: 1047
Proc 50 Просмотров: 2078
Proc 51 Просмотров: 1682
Proc 52 Просмотров: 1687
Proc 53 Просмотров: 1173
Proc 54 Просмотров: 1260
Proc 55 Просмотров: 1145
Proc 56 Просмотров: 1739
Proc 57 Просмотров: 1489
Proc 58 Просмотров: 1172
Proc 59 Просмотров: 1083
Proc 60 Просмотров: 1367

Комментарии

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



Заявка на расчет