По разделам

 

Решение задачи 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 Просмотров: 6575
Proc 2 Просмотров: 5073
Proc 3 Просмотров: 5180
Proc 4 Просмотров: 4338
Proc 5 Просмотров: 3408
Proc 6 Просмотров: 4659
Proc 7 Просмотров: 3927
Proc 8 Просмотров: 3027
Proc 9 Просмотров: 3158
Proc 10 Просмотров: 2918
Proc 11 Просмотров: 3018
Proc 12 Просмотров: 2216
Proc 13 Просмотров: 2455
Proc 14 Просмотров: 2698
Proc 15 Просмотров: 1899
Proc 16 Просмотров: 2885
Proc 17 Просмотров: 2528
Proc 18 Просмотров: 2446
Proc 19 Просмотров: 2365
Proc 20 Просмотров: 3227
Proc 21 Просмотров: 3335
Proc 22 Просмотров: 2453
Proc 23 Просмотров: 2439
Proc 24 Просмотров: 1694
Proc 25 Просмотров: 2077
Proc 26 Просмотров: 1843
Proc 27 Просмотров: 2055
Proc 28 Просмотров: 1764
Proc 29 Просмотров: 1949
Proc 30 Просмотров: 2485
Proc 31 Просмотров: 1701
Proc 32 Просмотров: 1262
Proc 33 Просмотров: 1303
Proc 34 Просмотров: 1722
Proc 35 Просмотров: 1196
Proc 36 Просмотров: 1660
Proc 37 Просмотров: 1513
Proc 38 Просмотров: 1224
Proc 39 Просмотров: 1124
Proc 40 Просмотров: 1868
Proc 41 Просмотров: 1927
Proc 42 Просмотров: 1176
Proc 43 Просмотров: 1146
Proc 44 Просмотров: 1033
Proc 45 Просмотров: 1166
Proc 46 Просмотров: 1067
Proc 47 Просмотров: 1103
Proc 48 Просмотров: 854
Proc 49 Просмотров: 1072
Proc 50 Просмотров: 2114
Proc 51 Просмотров: 1709
Proc 52 Просмотров: 1734
Proc 53 Просмотров: 1206
Proc 54 Просмотров: 1289
Proc 55 Просмотров: 1187
Proc 56 Просмотров: 1770
Proc 57 Просмотров: 1535
Proc 58 Просмотров: 1216
Proc 59 Просмотров: 1130
Proc 60 Просмотров: 1430

Комментарии

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



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