Нахождение площади прямоугольника по его вершинам - 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.

Объяснение кода листинга программы

  1. const p=0.0001; {точность сравнения длин}
  2. n=4; {количество точек}
  3. m=6; {количество отрезков=4 стороны+2 диагонали}
  4. type Point=record {тип - точка} x,y:real; end;
  5. var t:array[1..n] of Point; {массив точек}
  6. d:array[1..m] of real; {массив длин сторон и диагоналей}
  7. i,j,k,l:byte;
  8. s:real;
  9. begin
  10. clrscr;
  11. writeln('Введите координаты вершин прямоугольника в произвольном порядке:');
  12. for i:=1 to n do
  13. begin
  14. writeln('Вершина ',i);
  15. write('x=');readln(t[i].x);
  16. write('y=');readln(t[i].y);
  17. end;
  18. writeln('Координаты:');
  19. write('№');
  20. for i:=1 to n do
  21. write(i:4);
  22. writeln;
  23. write('X:');
  24. for i:=1 to n do
  25. write(t[i].x:4:1);
  26. writeln;
  27. write('Y:');
  28. for i:=1 to n do
  29. write(t[i].y:4:1);
  30. writeln;
  31. writeln;
  32. k:=0;
  33. for i:=1 to n-1 do
  34. for j:=i+1 to n do 1 begin
  35. k:=k+1;
  36. d[k]:=Dlina(t[i],t[j]);
  37. end;
  38. for i:=1 to m-1 do {сортируем длины по возрастанию}
  39. for j:=i+1 to m do
  40. if d[i]>d[j] then
  41. begin
  42. s:=d[i];
  43. d[i]:=d[j];
  44. d[j]:=s;
  45. end;
  46. {если первые 4 попарно равны и последние 2 равны и они больше первых}
  47. if ((abs(d[1]-d[2])<p)and(abs(d[3]-d[4])<p))
  48. and(abs(d[5]-d[6])<p)and(d[5]>d[4]) then
  49. begin
  50. s:=d[1]*d[3];
  51. write('Площадь прямоугольника=',s:0:2);
  52. end
  53. else write('Это не прямоугольник');
  54. end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.333 из 5
Похожие ответы