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