Нахождение площади прямоугольника по его вершинам - Pascal ABC
Формулировка задачи:
Здравствуйте,
необходимо найти площадь прямоугольника по его вершинам, не могу понять в чем моя ошибка?
Решение задачи: «Нахождение площади прямоугольника по его вершинам»
textual
Листинг программы
const p=0.0001;{точность сравнения длин} n=4; {кол.точек} m=6;{кол. отрезков=4 стороны+2 диагонали} type Point=record {тип - точка} x,y:real; end; {вычисление длины отрезка} function Dlina(a,b:Point):real; begin Dlina:=sqrt(sqr(a.x-b.x)+sqr(a.y-b.y)); end; var t:array[1..n] of Point;{массив точек} d:array[1..m] of real;{массив длин сторон и диагоналей} i,j,k,l:byte; s:real; begin clrscr; writeln('Введите координаты вершин прямоугольника в произвольном порядке:'); for i:=1 to n do begin writeln('Вершина ',i); write('x=');readln(t[i].x); write('y=');readln(t[i].y); end; writeln('Координаты:'); write('№'); for i:=1 to n do write(i:4); writeln; write('X:'); for i:=1 to n do write(t[i].x:4:1); writeln; write('Y:'); for i:=1 to n do write(t[i].y:4:1); writeln; writeln; k:=0; for i:=1 to n-1 do for j:=i+1 to n do begin k:=k+1; d[k]:=Dlina(t[i],t[j]); end; for i:=1 to m-1 do {сортируем длины по возрастанию} for j:=i+1 to m do if d[i]>d[j] then begin s:=d[i]; d[i]:=d[j]; d[j]:=s; end; {если первые 4 попарно равны и последние 2 равны и они больше первых} if ((abs(d[1]-d[2])<p)and(abs(d[3]-d[4])<p)) and(abs(d[5]-d[6])<p)and(d[5]>d[4]) then begin s:=d[1]*d[3]; write('Площадь прямоугольника=',s:0:2); end else write('Это не прямоугольник'); end.
Объяснение кода листинга программы
- const p=0.0001; {точность сравнения длин}
- n=4; {количество точек}
- m=6; {количество отрезков=4 стороны+2 диагонали}
- type Point=record {тип - точка} x,y:real; end;
- var t:array[1..n] of Point; {массив точек}
- d:array[1..m] of real; {массив длин сторон и диагоналей}
- i,j,k,l:byte;
- s:real;
- begin
- clrscr;
- writeln('Введите координаты вершин прямоугольника в произвольном порядке:');
- for i:=1 to n do
- begin
- writeln('Вершина ',i);
- write('x=');readln(t[i].x);
- write('y=');readln(t[i].y);
- end;
- writeln('Координаты:');
- write('№');
- for i:=1 to n do
- write(i:4);
- writeln;
- write('X:');
- for i:=1 to n do
- write(t[i].x:4:1);
- writeln;
- write('Y:');
- for i:=1 to n do
- write(t[i].y:4:1);
- writeln;
- writeln;
- k:=0;
- for i:=1 to n-1 do
- for j:=i+1 to n do 1 begin
- k:=k+1;
- d[k]:=Dlina(t[i],t[j]);
- end;
- for i:=1 to m-1 do {сортируем длины по возрастанию}
- for j:=i+1 to m do
- if d[i]>d[j] then
- begin
- s:=d[i];
- d[i]:=d[j];
- d[j]:=s;
- end;
- {если первые 4 попарно равны и последние 2 равны и они больше первых}
- if ((abs(d[1]-d[2])<p)and(abs(d[3]-d[4])<p))
- and(abs(d[5]-d[6])<p)and(d[5]>d[4]) then
- begin
- s:=d[1]*d[3];
- write('Площадь прямоугольника=',s:0:2);
- end
- else write('Это не прямоугольник');
- end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д