Вычислить площадь выпуклого многоугольника - 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);).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д