Предмет: Информатика, автор: sgt35997

Pascal/Вводятся 4 числа – длины отрезков. Найти максимальную площадь треугольника составленного из трёх отрезков этого набора или написать, что таких треугольников нет.

Ответы

Автор ответа: timosqout
1

Объясню идею, с кодом я думаю ты сам справишься.

Воспользуемся теоремой Герона:

p = \frac{a + b + c}{2}

S = \sqrt{p(p-a)(p-b)(p-c)}

То есть требуется только перебрать 4 варианта:

a, b, c

a, b, d

a, c, d

b, c, d

Вычислить площадь для каждого и найти максимум из них.

Автор ответа: BobbyFresnel
1

function Geron(ar: array of real): real;

begin

 var (a, b, c) := ar;

 if (a + b > c) and (a + c > b) and (b + c > a) then begin

   var p := (a + b + c) / 2;

   Result := Sqrt(p * (p - a) * (p - b) * (p - c))

 end

 else

   Result := 0

end;

begin

 var a := ReadArrReal(4);

 var s := a.Combinations(3).Select(t -> Geron(t)).Max;

 if s > 0 then

   s.Print

 else

   Print('Таких треугольников нет')

end.

Приложения:

sgt35997: Спасибо, но почему-то при компиляции выдает ошику
main.pas(5,6) Fatal: Syntax error, ";" expected but "(" found
Похожие вопросы