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.