Просмотр задания
На плос­ко­сти за­да­но мно­же­ство точек с це­ло­чис­лен­ны­ми ко­ор­ди­на­та­ми. Не­об­хо­ди­мо найти ми­ни­маль­но воз­мож­ную пло­щадь не­вы­рож­ден­но­го (то есть име­ю­ще­го не­ну­ле­вую пло­щадь) тре­уголь­ни­ка, одна вер­ши­на ко­то­ро­го рас­по­ло­же­на в на­ча­ле ко­ор­ди­нат, а две дру­гие лежат на биссектрисах углов, образованных осями координат, и при этом при­над­ле­жат за­дан­но­му мно­же­ству. Если та­ко­го тре­уголь­ни­ка не су­ще­ству­ет, не­об­хо­ди­мо вы­ве­сти со­от­вет­ству­ю­щее со­об­ще­ние.

На­пи­ши­те эф­фек­тив­ную, в том числе по ис­поль­зу­е­мой па­мя­ти, про­грам­му для ре­ше­ния этой за­да­чи.

Вход­ные дан­ные
В пер­вой стро­ке задаётся N – ко­ли­че­ство точек в за­дан­ном мно­же­стве. Каж­дая из сле­ду­ю­щих строк со­дер­жит два целых числа – ко­ор­ди­на­ты оче­ред­ной точки.

При­мер вход­ных дан­ных:
3
6 6
-8 8
9 7

Вы­ход­ные дан­ные
Если ис­ко­мый тре­уголь­ник су­ще­ству­ет, про­грам­ма долж­на на­пе­ча­тать одно число: ми­ни­маль­но воз­мож­ную пло­щадь тре­уголь­ни­ка, удо­вле­тво­ря­ю­ще­го усло­ви­ям. Если ис­ко­мый тре­уголь­ник не су­ще­ству­ет, про­грам­ма долж­на на­пе­ча­тать со­об­ще­ние: «Тре­уголь­ник не су­ще­ству­ет».

При­мер вы­ход­ных дан­ных для при­ведённого выше при­ме­ра вход­ных дан­ных:
48


Посмотрите пожалуйста этот код, в чем может быть ошибка? И если он в корне не правильный, не могли бы вы написать что нужно исправить :)

var
N: integer;
a, b, c, d, i: integer;
g1, g2, g3, S, p, min: real;
begin
readln(N);
min := 5000;
s := 0;
for i := 1 to N do
begin
readln(a, b);
g1 := sqrt(sqr(a) + sqr(b)); {Найдем по теореме Пифагора сторону g1}
readln(c, d);
g2 := sqrt(sqr(c) + sqr(d)); {Найдем по теореме Пифагора сторону g2}
g3 := sqrt(sqr(c - a) + sqr(d - b)); {Найдем по теореме пифагора сторону g3}
p := (g1 + g2 + g3) / 2; {Найдем полупериметр}
s := sqrt(p * (p - g1) * (p - g2) * (p - g3)); {Воспользуемся формулой Герона, для нахождения площади треугольника}
if s > 0 and s < min then s := min;
end;
if s = 0 then writeln('Треугольника не существует!') else writeln(s:0:3);
end.
30 января 2016
Ответы (0)

Нет ответов, ваш ответ будет первым

Перевести число из в Результат: 510 = 1012