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