Используя типы TPoint, TTriangle и функции Leng и Area, описать функцию Dist(P, A, B) вещественного типа (P, A, B — параметры типа TPoint), находящую расстояние D(P, AB) от точки P до прямой AB по формуле D(P, AB) = 2¢SPAB/|AB|, где SPAB — площадь треугольника PAB. С помощью этой функции найти расстояния от точки P до прямых AB, AC, BC, если даны координаты точек P, A, B, C — Pascal(Паскаль)

uses crt;
type TPoint=record {тип точка}
            x,y:real;{поля - координаты}
            end;
function Leng(a1,a2:TPoint):real;{длина отрезка(стороны треугольника)}
begin
Leng:=sqrt(sqr(a1.x-a2.x)+sqr(a1.y-a2.y));
end;
function Area(a1,a2,a3:TPoint):real;{площадь треугольника}
var s1,s2,s3,p,S:real;
begin
s1:=Leng(a1,a2);{длина стороны}
s2:=Leng(a2,a3);
s3:=Leng(a1,a3);
p:=(s1+s2+s3)/2;{полупериметр}
S:=sqrt(p*(p-s1)*(p-s2)*(p-s3));{формула Герона}
Area:=S;
end;
function Dist(p,a,b:TPoint):real;{расстояние до прямой, высота треугольника, опущенная на эту сторону}
begin
Dist:=2*Area(p,a,b)/Leng(a,b);{переделанная формула площади треугольника S=1/2*h*a}
end;
var p,a,b,c:TPoint;
begin
clrscr;
writeln('Vvedite koordinaty tochek:');
write('  P.x=');readln(p.x);
write('  P.y=');readln(p.y);
write('  A.x=');readln(a.x);
write('  A.y=');readln(a.y);
write('  B.x=');readln(b.x);
write('  B.y=');readln(b.y);
write('  C.x=');readln(c.x);
write('  C.y=');readln(c.y);
writeln('Rasstoyanie PAB=',Dist(p,a,b):0:3);
writeln('Rasstoyanie PAC=',Dist(p,a,c):0:3);
writeln('Rasstoyanie PBC=',Dist(p,b,c):0:3);
readln
end.

Leave a Comment

47 + = 48