Нахождение площади прямоугольника по его вершинам - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, необходимо найти площадь прямоугольника по его вершинам, не могу понять в чем моя ошибка?
Листинг программы
  1. Program Primer;
  2. Var a,b,X,Y,X1,Y1,X2,Y2,S:integer;
  3. Begin
  4. WriteLn('Введите координаты вершин');
  5. Read(X,Y,X1,Y1);
  6. abs(a):=SQRT(SQR(X-X1)*SQR(Y-Y1));
  7. WriteLn('Модуль a='abs(a));
  8. WriteLn('Введите координаты вершин');
  9. Read(X,Y,X2,Y2);
  10. abs(b):=SQRT(SQR(X-X2)*SQR(Y-Y2));
  11. WriteLn('Модуль b='abs(b));
  12. WriteLn('Введите длину и ширину прямоугольника');
  13. Read(a,b);
  14. S:=a*b;
  15. WriteLn('Площадь прямоугольника='S);
  16. End.

Решение задачи: «Нахождение площади прямоугольника по его вершинам»

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы