Найти четырехугольник наибольшей площади с вершинами в заданных точках - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

На плоскости дан набор точек с целочисленными координатами. Необходимо найти четырехугольник наибольшей площади с вершинами в этих точках, две вершины которого лежат на оси Ox, а две оставшиеся - по разные стороны от оси Ox. В первой строке вводиться одно целое число положительное - количество точек N.Каждая из следующих строк содержит два целых числа: сначала координата Х затем координата Y очередной точки. Программа должна вывести одно целое число - максимальную площадь четырехугольника удовлетворяющего условиям задачи. У меня получилось так(можно ли это как-то улучшить? Если не трудно помогите)

Решение задачи: «Найти четырехугольник наибольшей площади с вершинами в заданных точках»

textual
Листинг программы
const 
  MaxInt = 2147483647;
  MinInt = -2147483648;
 
var
  N, i, x, y, xRight, xLeft, yHigh, yLow: integer;
  s: real;
 
begin
  readln(N);
  xRight := MinInt; xLeft := MaxInt;
  yHigh := MinInt; yLow := MaxInt;
  for i := 1 to N do
  begin
    read(x, y);
    if y = 0 then
    begin
      if xRight < x then
        xRight := x;
      if xLeft > x then
        xLeft := x;
    end
    else
    begin
      if yLow > y then
        yLow := y;
      if yHigh < y then
        yHigh := y;
    end;
  end;
  if (xRight = MinInt) or (xLeft = MaxInt) or (yHigh < 0) or (yLow > 0) then halt(1);
  writeln((xRight - xLeft) * (yHigh - yLow) / 2);
end.

Объяснение кода листинга программы

В этом коде выполняется поиск четырёхугольника наибольшей площади, заданного набором вершин в пространстве (с координатами по осям x и y). Код считывает количество вершин этого четырёхугольника (N) и затем считывает координаты вершин. Затем он вычисляет границы этого четырёхугольника, т.е. наименьшую и наибольшую оси x и y, и записывает их в переменные xRight, xLeft, yHigh, yLow. Далее, после цикла по всем вершинам, он проверяет, является ли одна из границ x или y «слишком большой» (т.е. равной min_int или max_int), и если это так, то прерывает выполнение программы, выводя сообщение об ошибке. Если все границы в порядке, то он выводит площадь этого четырёхугольника, вычисляя её как разность произведений (xRight — xLeft) * (yHigh — yLow) / 2.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы