Составить программу, которая использует модуль. В модуле разработать подпрограммы для работы с трапециями, которые заданы координатами вершин: вычисления периметра, площади, высоты, диагоналей — Pascal(Паскаль)

unit unit1;
interface
const t=0.0001;
function Paral(x1,y1,x2,y2,x3,y3,x4,y4:integer):boolean;
function Dlina(x1,y1,x2,y2:integer):real;
function Perimetr(x1,y1,x2,y2,x3,y3,x4,y4:integer):real;
function Vysota(x1,y1,x2,y2,x3,y3,x4,y4:integer):real;
procedure Diagonali(x1,y1,x2,y2,x3,y3,x4,y4:integer);
function Plosh(x1,y1,x2,y2,x3,y3,x4,y4:integer):real;
implementation
function Paral;{проверка параллельности оснований}
begin
Paral:=((x1=x2)and(x3=x4))or(abs((y2-y1)/(x2-x1)-(y4-y3)/(x4-x3))<t);
end;
function Dlina;{вычисление длины линий}
begin
Dlina:=sqrt(sqr(x2-x1)+sqr(y2-y1));
end;
function Perimetr;{периметр}
begin
Perimetr:=Dlina(x1,y1,x2,y2)+Dlina(x2,y2,x4,y4)
         +Dlina(x3,y3,x4,y4)+Dlina(x1,y1,x3,y3);
end;
function Vysota;{высота}
var a,b,c,d:real;
begin
c:=Dlina(x1,y1,x3,y3);
d:=abs(Dlina(x1,y1,x2,y2)-Dlina(x3,y3,x4,y4))/2;
Vysota:=sqrt(c*c-d*d);
end;
procedure Diagonali;{вычисление диагоналей}
var d1,d2:real;
begin
d1:=Dlina(x1,y1,x4,y4);
d2:=Dlina(x2,y2,x3,y3);
writeln('Длина диагоналей ',d1:0:2,'  ',d2:0:2);
end;
function Plosh;{площадь}
begin
Plosh:=(Dlina(x1,y1,x2,y2)+Dlina(x3,y3,x4,y4))*Vysota(x1,y1,x2,y2,x3,y3,x4,y4)/2;
end;
end.
Текст программы.
 
uses crt,unit1;
var x1,y1,x2,y2,x3,y3,x4,y4,a,b:integer;
    l,h,p,s,d1,d2:real;
begin
clrscr;
repeat
writeln('Введите координаты трапеции:');
writeln('-нижнее основание (x1,y1,x2,y2):');
readln(x1,y1,x2,y2);
writeln('-вехнее основание (x3,y3,x4,y4):');
readln(x3,y3,x4,y4);
if not Paral(x1,y1,x2,y2,x3,y3,x4,y4) then
writeln('Это не трапеция, повторите ввод.');
until Paral(x1,y1,x2,y2,x3,y3,x4,y4);
writeln('Перметр=',Perimetr(x1,y1,x2,y2,x3,y3,x4,y4):0:2);
writeln('Площадь=',Plosh(x1,y1,x2,y2,x3,y3,x4,y4):0:2);
writeln('Высоиа=',Vysota(x1,y1,x2,y2,x3,y3,x4,y4):0:2);
Diagonali(x1,y1,x2,y2,x3,y3,x4,y4);
readln
end.

Leave a Comment

+ 48 = 50