С помощью клавиатуры вводятся координаты 4 точек : A(x1;y1), B(x2;y2), C(x3;y3), D(x4;y4) .Если последовательно соединить точки между собой ,то получится фигура : параллелограмм ,ромб,квадрат ,прямоугольник ,трапеция или произвольный четырёхугольник — Pascal(Паскаль)

uses crt;
const t=0.0001;{точность сравнения длин сторон и диагоналей}
function Dlina(x1,y1,x2,y2:integer):real;
begin
Dlina:=sqrt(sqr(x1-x2)+sqr(y1-y2));
end;
function IsParl(x1,y1,x2,y2,x3,y3,x4,y4:integer):boolean;
begin
IsParl:=(y2-y1)*(x4-x3)=(y4-y3)*(x2-x1);
end;
var x1,y1,x2,y2,x3,y3,x4,y4:integer;
    ab,bc,cd,da,ac,bd:real;
begin
clrscr;
writeln('Введите последовательно координаты 4х точек:');
write('A:  ');readln(x1,y1);
write('B:  ');readln(x2,y2);
write('C:  ');readln(x3,y3);
write('D:  ');readln(x4,y4);
ab:=Dlina(x1,y1,x2,y2);
bc:=Dlina(x2,y2,x3,y3);
cd:=Dlina(x3,y3,x4,y4);
da:=Dlina(x4,y4,x1,y1);
ac:=Dlina(x1,y1,x3,y3);
bd:=Dlina(x2,y2,x4,y4);
{обе пары не параллельны}
if not IsParl(x1,y1,x2,y2,x3,y3,x4,y4)and not IsParl(x2,y2,x3,y3,x1,y1,x4,y4)
   then write('Произвольный четырехугольник')
{одна пара параллельна, вторая нет}
else if (IsParl(x1,y1,x2,y2,x3,y3,x4,y4)and not IsParl(x2,y2,x3,y3,x1,y1,x4,y4))
     or (not IsParl(x1,y1,x2,y2,x3,y3,x4,y4) and IsParl(x2,y2,x3,y3,x1,y1,x4,y4))
   then write('Трапеция')
{обе пары параллельны}
else if IsParl(x1,y1,x2,y2,x3,y3,x4,y4)and IsParl(x2,y2,x3,y3,x1,y1,x4,y4) then
 begin
  {стороны не равны и диагонали не равны}
  if ((abs(ab-bc)>t)and(abs(ac-bd)>t)) then write('Параллелограмм')
  {стороны не равны, а диагонали равны}
  else if ((abs(ab-bc)>t)and(abs(ac-bd)<t)) then write('Прямоугольник')
  {стороны равны, а диагонали не равны}
  else if ((abs(ab-bc)<t)and(abs(ac-bd)>t)) then write('Ромб')
  {стороны равны и диагонали равны}
  else if ((abs(ab-bc)<t)and(abs(ac-bd)<t)) then write('Квадрат');
 end;
readln
end.

Leave a Comment

1 + 8 =