Просмотр задания
На плоскости задано множество точек с целочисленными координатами. Необходимо найти минимально возможную площадь невырожденного (то есть имеющего ненулевую площадь) треугольника, одна вершина которого расположена в начале координат, а две другие лежат на биссектрисах углов, образованных осями координат, и при этом принадлежат заданному множеству. Если такого треугольника не существует, необходимо вывести соответствующее сообщение.
Напишите эффективную, в том числе по используемой памяти, программу для решения этой задачи. Входные данные В первой строке задаётся 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)
Нет ответов, ваш ответ будет первым