ОФ
Ольга Фёдорова

Помогите пожалуйста с задачей по Delphi

Найти длину наибольшей диагонали выпуклого многоугольника, если известны координаты его вершин

Skif .
Skif .

Пусть все координаты вершин многоугольника лежат в массиве в порядке их обхода по или против часовой стрелки:

type
tPoints = record
X, Y : Double;
end;
tArrPoints = array of tPoints;

var
Arr : tArrPoints;

Тогда можно просто перебрать все пары точек для нахождения максимального расстояния между точками…
Только нужно учесть, что рядом стоящие точки — это не диагонали, а рёбра. Следовательно нужно рассматривать точки с условием, что между ними есть хотя бы одна точка.


max1 := 0; max2 := 0; len := 0;
for n1 := 0 to Length(Arr) - 3 do
for n2 := n1+2 to Pred(Length(Arr)) do
if LengthOtr(n1, n2) > len then
begin
len := LengthOtr(n1, n2); max1 := n1; max2 := n2;
end;

Где функция LengthOtr:

function LengthOtr(n1, n2 : Integer) : Double;
begin
Result := Sqrt((Arr[n1].X-Arr[n2].X)*(Arr[n1].X-Arr[n2].X)+(Arr[n1].Y-Arr[n2].Y)*(Arr[n1].Y-Arr[n2].Y));
end;

Ну вот и всё!
В переменных max1 и max2 хранятся номера вершин в массиве, а в переменной len — длина наибольшей диагонали.

АЛ
Александр Логунов

эх Максим Максим.. . пошли по... ээээ.. . самое главное не указал.. . в задаче то.... цена вопроса...

Артём
Артём

for i:=1 to {максимальное количество сторон} do
L:=sqrt(sqr(x[a]-x)-sqr(y[a]-y))$

for i:=1 to {максимальное количество сторон} then
if resultion then resultion:=L;

write resultion;

;-----L - длина отрезка
x[a],x,y[a],y- координаты начала и конца
resultion - сам догадаешься

Пробуй... но где-то так

Похожие вопросы
Помогите пожалуйста решить задачи в Delphi
Помогите пожалуйста с delphi
помогите с задачей, на множества в Delphi
Помогите, пожалуйста, с решением задачи по программированию в среде Delphi!
помогите пожалуйста из Delphi.
Помогите!! ! Задача по Delphi
Задача по Delphi решите пожалуйсто кто понял!!
Помогите пожалуйста с DELPHI!!!
помогите, пожалуйста!! ! Delphi
Помогите, пожалуйста с задачей по Delphi