Найти четырехугольник наибольшей площади с вершинами в заданных точках - PascalABC.NET
Формулировка задачи:
- program C4;
- var
- x: array [1..1000] of integer;
- y: array [1..1000] of integer;
- N, i, c, maxx, maxxr, maxxl, maxy, maxy1: integer;
- s: real;
- begin
- readln(N);
- c := 0;
- for i := 1 to N do
- begin
- read(x[i], y[i]);
- end;
- for i := 1 to N do
- begin
- if y[i] = 0 then
- c := c + 1;
- end;
- if c < 2 then exit;
- if ((maxxr > 0) and (maxxl < 0)) or ((maxxr < 0) and (maxxl > 0)) then begin
- for i := 1 to n do
- begin
- if y[i] = 0 then begin
- if (maxxl > x[i]) then
- begin
- maxxl := x[i];
- end;
- end;
- end;
- maxx := abs(maxxl) + abs(maxxr);
- end;
- if ((maxxr <= 0) and (maxxl <= 0)) or ((maxxr >= 0) and (maxxl >= 0)) then begin
- for i := 1 to n do
- begin
- if y[i] = 0 then begin
- if (maxxr < x[i]) then
- begin
- maxxr := x[i];
- end;
- end;
- end;
- maxx := abs(abs(maxxl) - abs(maxxr));
- end;
- for i := 1 to N do
- begin
- if (maxy < y[i]) then
- begin
- maxy := y[i];
- end;
- if (maxy1 > y[i]) then
- begin
- maxy1 := y[i];
- end;
- end;
- s := 0.5 * maxx * (maxy + abs(maxy1));
- writeln(s);
- end.
Решение задачи: «Найти четырехугольник наибольшей площади с вершинами в заданных точках»
- 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д