Задали сделать прогу, незнаю как составить. Используя функции Otr и Area из заданий Proc16 и Proc18, описать процедуру Dist(Px,Py,Ax,Ay,Bx,By,D), находящую расстояние D от точки P до прямой AB по формуле D = 2SPAB / |AB|, где S...
Задали сделать прогу, незнаю как составить. Используя функции Otr и Area из заданий Proc16 и Proc18, описать процедуру Dist(Px,Py,Ax,Ay,Bx,By,D), находящую расстояние D от точки P до прямой AB по формуле D = 2SPAB / |AB|, где SPAB — площадь треугольника PAB. С помощью этой процедуры найти расстояния от точки P до прямых AB, AC, BC, если даны координаты точек P, A, B, C. Помогите пожалуйста.
Proc16. Описать функцию Otr(Ax,Ay,Bx,By) вещественного типа, находящую длину отрезка AB на плоскости по координатам его концов: |AB| = sqrt((Ax-Bx)2 + (Ay-By)2) (Ax, Ay, Bx, By — вещественные параметры). С помощью этой функции найти длины отрезков AB, AC, AD, если даны координаты точек A, B, C, D.
Proc18. Используя функции Otr и Perim из заданий Proc16 и Proc17, описать функцию Area(Ax,Ay,Bx,By,Cx,Cy) вещественного типа, находящую площадь треугольника ABC по формуле Герона: SABC = sqrt(p·(p–|AB|)·(p–|AC|)·(p–|BC|)), где p — полупериметр. С помощью этой функции найти площади треугольников ABC, ABD, ACD, если даны координаты точек A, B, C, D.
(вот еще если понадобиться)Proc17. Используя функцию Otr из задания Proc16, описать функцию Perim(Ax,Ay,Bx,By,Cx,Cy) вещественного типа, находящую периметр треугольника ABC по координатам его вершин (Ax, Ay, Bx, By, Cx, Cy — вещественные параметры). С помощью этой функции найти периметры треугольников ABC, ABD, ACD, если даны координаты точек A, B, C, D.
только напишите пожалуйста полностью с описательной частью т.е с началом и т.д .
Заранее огромное спасибо
Ответ(ы) на вопрос:
Гость
function Otr(Ax, Ay, Bx, By: real): real;
begin
Otr := sqrt(sqr(Ax - Bx) + sqr(Ay - By))
end;
function Perim(Ax, Ay, Bx, By, Cx, Cy: real): real;
begin
Perim := Otr(Ax, Ay, Bx, By) + Otr(Bx, By, Cx, Cy) + Otr(aX, aY, Cx, Cy);
end;
function Area(Ax, Ay, Bx, By, Cx, Cy: real): real;
var
pp: real;
begin
pp := Perim(Ax, Ay, Bx, By, Cx, Cy) / 2;
Area := sqrt(pp * (pp - Otr(Ax, Ay, Bx, By)) * (pp - Otr(Bx, By, Cx, Cy)) *
(pp - Otr(Ax, Ay, Cx, Cy)))
end;
procedure Dist(Px, Py, Ax, Ay, Bx, By: real; var D: real);
begin
D := 2 * Area(Px, Py, Ax, Ay, Bx, By) / Otr(Ax, Ay, Bx, By)
end;
var
Px, Py, Ax, Ay, Bx, By, Cx, Cy: real;
d: real;
begin
writeln('Вводите координаты точкек парами чисел: ');
write('P-> ');
readln(Px, Py);
write('A-> ');
readln(Ax, Ay);
write('B-> ');
readln(Bx, By);
write('C-> ');
readln(Cx, Cy);
writeln;
Dist(Px, Py, Ax, Ay, Bx, By, d);
writeln('Расстояние от Р до АВ равно ', d);
Dist(Px, Py, Cx, Cy, Bx, By, d);
writeln('Расстояние от Р до ВC равно ', d);
Dist(Px, Py, Ax, Ay, Cx, Cy, d);
writeln('Расстояние от Р до АC равно ', d)
end.
Тестовое решение:
Вводите координаты точкек парами чисел:
P-> -3 6
A-> 5 8
B-> 9 -4
C-> 8 -2.5
Расстояние от Р до АВ равно 8.22192191643778
Расстояние от Р до ВC равно 4.43760156980184
Расстояние от Р до АC равно 8.24163383692135
Не нашли ответ?
Похожие вопросы