Найти тройку точек, которые являются вершинами треугольника наибольшей площади - PascalABC.NET

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

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

Даны координаты различных точек плоскости (x1,y1),(x2,y2),...,(xn,yn), где n>=3. Найти тройку точек, которые являются вершинами треугольника наибольшей площади

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

textual
Листинг программы
  1. const nmax=20;
  2. type point=record
  3.            x,y:real
  4.            end;
  5.      trg=array[1..3] of point;
  6. function Plsh(a,b,c:point):real;
  7. begin
  8. Plsh:=abs(((a.x-c.x)*(b.y-c.y)-(b.x-c.x)*(a.y-c.y))/2)
  9. end;
  10. var n,i,j,k,imx,jmx,kmx:integer;
  11.     a:array[1..nmax] of point;
  12.     mx:real;
  13. begin
  14. randomize;
  15. repeat
  16. write('Количество точек от 3 до ',nmax,' n=');
  17. readln(n);
  18. until n in [1..nmax];
  19. for i:=1 to n do
  20.  begin
  21.   a[i].x:=-5+10*random;
  22.   a[i].y:=-5+10*random;
  23.  end;
  24. writeln('Координаты вершин треугольников:');
  25. write('  ');
  26. for i:=1 to n do
  27. write(i:5);
  28. writeln;
  29. write('x:');
  30. for i:=1 to n do
  31. write(a[i].x:5:1);
  32. writeln;
  33. write('y:');
  34. for i:=1 to n do
  35. write(a[i].y:5:1);
  36. writeln;
  37. mx:=Plsh(a[1],a[2],a[3]);
  38. imx:=1;
  39. jmx:=2;
  40. kmx:=3;
  41. for i:=1 to n-2 do
  42. for j:=i+1 to n-1 do
  43. for k:=j+1 to n do
  44. if Plsh(a[i],a[j],a[k])>Plsh(a[imx],a[jmx],a[kmx]) then
  45.  begin
  46.   mx:=Plsh(a[i],a[j],a[k]);
  47.   imx:=i;
  48.   jmx:=j;
  49.   kmx:=k
  50.  end;
  51. writeln;
  52. writeln('Максимальная площадь=',mx:0:1,' у треугольника с координатами');
  53. writeln(imx:2,'(',a[imx].x:4:1,';',a[imx].y:4:1,')');
  54. writeln(jmx:2,'(',a[jmx].x:4:1,';',a[jmx].y:4:1,')');
  55. writeln(kmx:2,'(',a[kmx].x:4:1,';',a[kmx].y:4:1,')');
  56. end.

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

  1. В начале кода объявлены константы и типы данных:
    • nmax - максимальное количество точек (20);
    • point - тип данных для представления точки с координатами (x, y);
    • trg - массив из трех точек (triple) для представления треугольника.
  2. Затем определена функция Plsh, вычисляющая площадь треугольника по координатам вершин.
  3. Далее идут переменные для хранения количества точек (n), индексов максимальной площади (imx, jmx, kmx) и максимальной площади (mx).
  4. В цикле repeat происходит запрос на ввод количества точек и повторение программы при некорректном вводе.
  5. В цикле for i:=1 to n создаются случайные координаты для каждой точки и записываются в массив a.
  6. Выводятся координаты всех точек.
  7. В цикле for i:=1 to n-2 происходит поиск максимальной площади треугольника путем перебора всех возможных комбинаций из трех точек.
  8. Выводится максимальная площадь и координаты вершин треугольника с максимальной площадью.

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


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

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

8   голосов , оценка 3.75 из 5

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

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

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