Вычислить площадь выпуклого многоугольника - Free Pascal

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

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

Вычислить площадь выпуклого многоугольника с n вершинами, коорднаты которых заданы в порядке обхода по часовой стрелке.

Входные данные:

В первой строке задано натуральное число n (n < 1000) - количество вершин многоугольника. В последующих n строках по два целых числа - координаты соответствующей вершины (-1000 <= x, y <= 1000).

Выходные данные:

В выходной поток вывести единственное вещественное число с точностью три знака после запятой - площадь многоугольника.

Пример входного файла:

3 0 0 3 0 3 4

Пример выходного файла:

6.000

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

textual
Листинг программы
var t:array[1..2,1..1000] of integer;//если вершин <=1000, то 1..1001
    n,i:integer;
    sx,sy,s:real;
begin
readln(n);//читаем N
for i:=1 to n do//читаем кооржинаты вершин
readln(t[1,i],t[2,i]);
t[1,n+1]:=t[1,1];//замыкаем полигон
t[2,n+1]:=t[2,1];
sx:=0;//считаем площадь через векторное произведение
sy:=0;
for i:=1 to n do
 begin
  sx:=sx+t[1,i]*t[2,i+1];
  sy:=sy+t[2,i]*t[1,i+1];
 end;
s:=abs(sx-sy)/2;
write(s:0:3);//выводим
end.

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

  1. В начале кода объявляются переменные: t (массив), n (количество вершин), i (счётчик вершин), sx, sy, s (для вычисления площади).
  2. Через readln() считывается количество вершин многоугольника (n).
  3. Далее, с помощью цикла for, считываются координаты вершин многоугольника в массив t.
  4. Последняя вершина многоугольника устанавливается равной первой вершине (t[1,n+1]:=t[1,1]; t[2,n+1]:=t[2,1];).
  5. С помощью двух вложенных циклов for вычисляются два вектора, используемых для вычисления площади.
  6. Для вычисления площади используется формула векторного произведения: sx = (1/2) det(t[1,i],t[2,i+1]), sy = (1/2) det(t[2,i],t[1,i+1]).
  7. Значения sx и sy накапливаются в переменных sx и sy соответственно.
  8. После вычисления площади для всех вершин, вычисляется окончательное значение площади (s := abs(sx-sy)/2;).
  9. С помощью функции write() выводится значение площади многоугольника с точностью до трёх знаков после запятой (write(s:0:3);).

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


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

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

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