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

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

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

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

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

textual
Листинг программы
const nmax=20;
type point=record
           x,y:real
           end;
     trg=array[1..3] of point;
function Plsh(a,b,c:point):real;
begin
Plsh:=abs(((a.x-c.x)*(b.y-c.y)-(b.x-c.x)*(a.y-c.y))/2)
end;
var n,i,j,k,imx,jmx,kmx:integer;
    a:array[1..nmax] of point;
    mx:real;
begin
randomize;
repeat
write('Количество точек от 3 до ',nmax,' n=');
readln(n);
until n in [1..nmax];
for i:=1 to n do
 begin
  a[i].x:=-5+10*random;
  a[i].y:=-5+10*random;
 end;
writeln('Координаты вершин треугольников:');
write('  ');
for i:=1 to n do
write(i:5);
writeln;
write('x:');
for i:=1 to n do
write(a[i].x:5:1);
writeln;
write('y:');
for i:=1 to n do
write(a[i].y:5:1);
writeln;
mx:=Plsh(a[1],a[2],a[3]);
imx:=1;
jmx:=2;
kmx:=3;
for i:=1 to n-2 do
for j:=i+1 to n-1 do
for k:=j+1 to n do
if Plsh(a[i],a[j],a[k])>Plsh(a[imx],a[jmx],a[kmx]) then
 begin
  mx:=Plsh(a[i],a[j],a[k]);
  imx:=i;
  jmx:=j;
  kmx:=k
 end;
writeln;
writeln('Максимальная площадь=',mx:0:1,' у треугольника с координатами');
writeln(imx:2,'(',a[imx].x:4:1,';',a[imx].y:4:1,')');
writeln(jmx:2,'(',a[jmx].x:4:1,';',a[jmx].y:4:1,')');
writeln(kmx:2,'(',a[kmx].x:4:1,';',a[kmx].y:4:1,')');
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
Похожие ответы