Нужно переделать эту программу на паскале для нахождения треугольника с самой большой площадью, образованным всеми вариантами точек
uses crt,graphABC;
var
x,y:array[1..100] of integer;
maxR,R,i,j:integer;
begin
randomize;
for i:=1 to 100 do
begin
x[i]:=random(600)+10;
y[i]:=random(360)+10;
circle(x[i],y[i],2);
end;
maxR:=0;
for i:=1 to 99 do
for j:= i+1 to 100 do
begin
R:=sqr(x[i]-x[j])+sqr(y[i]-y[j]);
if R>maxR then maxR:=R;
end;
readln;
setpencolor(clred);
for i:=1 to 99 do
for j:=i+1 to 100 do
begin
R:=sqr(x[i]-x[j])+sqr(y[i]-y[j]);
if R=maxR then line (x[i],y[i],x[j],y[j]);
if R=maxR then writeln (x[i],' ',y[i],' ',x[j],' ',y[j]);
end;
end.

23 Окт 2019 в 22:44
229 +2
0
Ответы
1

uses GraphABC;
var
x, y: array[1..100] of integer;
maxArea, area, i, j, k: integer;

function TriangleArea(x1, y1, x2, y2, x3, y3: integer): integer;
begin
TriangleArea := Abs((x1 (y2 - y3) + x2 (y3 - y1) + x3 * (y1 - y2)) div 2);
end;

begin
randomize;
for i := 1 to 100 do
begin
x[i] := random(600) + 10;
y[i] := random(360) + 10;
circle(x[i], y[i], 2);
end;

maxArea := 0;
for i := 1 to 98 do
for j := i + 1 to 99 do
for k := j + 1 to 100 do
begin
area := TriangleArea(x[i], y[i], x[j], y[j], x[k], y[k]);
if area > maxArea then
maxArea := area;
end;

SetPenColor(clRed);
for i := 1 to 98 do
for j := i + 1 to 99 do
for k := j + 1 to 100 do
begin
area := TriangleArea(x[i], y[i], x[j], y[j], x[k], y[k]);
if area = maxArea then
begin
Line(x[i], y[i], x[j], y[j]);
Line(x[j], y[j], x[k], y[k]);
Line(x[k], y[k], x[i], y[i]);
writeln(x[i], ' ', y[i], ' ', x[j], ' ', y[j], ' ', x[k], ' ', y[k]);
end;
end;

ReadLn;
end.

19 Апр 2024 в 09:47
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир