Решить в паскале : Написать программу, определяющую, является ли фигура квадратом....

0 голосов
40 просмотров

Решить в паскале :
Написать программу, определяющую, является ли фигура квадратом. Вершины квадрата задаются координатами точек.


Информатика (36 баллов) | 40 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
// PascalABC.NET 3.2, сборка 1356 от 04.12.2016
// Внимание! Если программа не работает, обновите версию!

type
  Point=record
    x,y:real;
    name:char
  end;
  Vector=record
    x,y,l:real;
  end;

function CreatePoint(px,py:real):Point;
begin
  With Result do begin
    x:=px;
    y:=py;
  end
end;

function CreateVector(A,B:Point):Vector;
begin
  With Result do begin
    x:=B.x-A.x;
    y:=B.y-A.y;
    l:=Sqrt(x*x+y*y)
  end
end;
 
function IsNormal(A,B:Vector):=Abs(B.x*A.x+B.y*A.y)<=1e-6;<br>
begin
  var x,y:real;
  Write('Введите координаты x и y точки A: '); Read(x,y);
  var A:=CreatePoint(x,y);
  Write('Введите координаты x и y точки B: '); Read(x,y);
  var B:=CreatePoint(x,y);
  var AB:=CreateVector(A,B);
  Write('Введите координаты x и y точки C: '); Read(x,y);
  var C:=CreatePoint(x,y);
  var BC:=CreateVector(B,C);
  if Abs(AB.l-BC.l)>1e-6 then begin
    Writeln('Стороны AB и BC не равны');
    Exit
    end;
  if not IsNormal(AB,BC) then begin
    Writeln('Стороны AB и BC не перпендикулярны');
    Exit
    end;
  Write('Введите координаты x и y точки D: '); Read(x,y);
  var D:=CreatePoint(x,y);
  var CD:=CreateVector(C,D);
  if Abs(AB.l-CD.l)>1e-6 then begin
    Writeln('Стороны AB и CD не равны');
    Exit
    end;
  var AD:=CreateVector(D,A);
  if Abs(AB.l-AD.l)>1e-6 then Writeln('Стороны AB и ADC не равны')
  else Writeln('Точки образуют квадрат с точностью не ниже 0.000001')
end.

Пример
Здесь заданы координаты квадрата, сдвинутого относительно осей координат и повернутого на угол 30 градусов против часовой стрелки. Поэтому числа такие "некруглые".

Введите координаты x и y точки A: -0.4641 -4.4641
Введите координаты x и y точки B: 3.5359 2.4641
Введите координаты x и y точки C: 10.4641 -1.5359
Введите координаты x и y точки D: 6.4641 -8.4641
Точки образуют квадрат с точностью не ниже 0.000001

(150k баллов)