Страница 1 из 1

Алгоритм с ветвлением

Добавлено: 27 мар 2013, 19:21
Олечка12
помогите с кодом, пожалуйста..
Даны координаты четырех точек. Определить какие треугольники, образованные этими точками, имеют максимальные и минимальные периметр и площадь.
FREE PASCAL

Код: Выделить всё

uses math;
var
    n, i, j, c :longint;
    x, y :array[1 .. 5] of longint;
    minP, maxP, minS, maxS, l1, l2, l3 : real;
 
function dist(v, u :longint) :real;
begin
    dist := sqrt(sqr(x[v] - x[u]) + sqr(y[v] - y[u]));
end;
 
function area(v, u, p :longint) :real;
begin
    area := abs((x[v] - x[u]) * (y[p] - y[u]) - (y[v] - y[u]) * (x[p] - x[u])) * 0.5;
end;
 
begin
    for i := 1 to 4 do
        readln(x[i], y[i]);
    minP := 1000000000;
    minS := 1000000000;
 
как найти l1, l2, l3. у меня не получается.
цикл использовать нельзя..(

Re: Алгоритм с ветвлением

Добавлено: 28 мар 2013, 11:16
Хыиуду
Если пронумеровать точки 1, 2, 3, 4, то i-м треугольником можно считать треугольник, образованный всеми точками, кроме i.
В цикле пройдитесь, для каждого треугольника посчитайте dist для каждой пары его вершин, посчитайте площадь. Если они меньше предварительно запомненных - сохраните номер треугольника