Найти площадь выпуклого n-угольника, заданного координатами своих вершин (в порядке обхода по часовой стрелке) - Free Pascal
Формулировка задачи:
uses crt; function plos(x1,y1,x2,y2,x3,y3:real):real; begin //формула через тангенс половинного угла plos:=abs((x1-x3)*(y2-y3)-(x2-x3)*(y1-y3))/2; end; const nmax=100; var x,y:array[1..nmax] of real; n,i:byte; s:real; begin repeat write('Количество вершин от 3 до ',nmax,' n='); read(n); until n in [3..nmax]; writeln('Введите координаты вершин в порядке обхода:'); for i:=1 to n do begin write('x[',i,']='); read(x[i]); write('y[',i,']='); read(y[i]); end; s:=plos(x[1],y[1],x[2],y[2],x[3],y[3]); writeln('S1=',s:0:2); for i:=3 to n do s:=s+plos(x[1],y[1],x[i],y[i],x[i+1],y[i+1]); write('S=',s:0:2); end.
Решение задачи: «Найти площадь выпуклого n-угольника, заданного координатами своих вершин (в порядке обхода по часовой стрелке)»
textual
Листинг программы
procedure SumPlosh(x1,y1,x2,y2,x3,y3:real; var s:real); begin //формула через тангенс половинного угла s:=s + abs((x1-x3)*(y2-y3)-(x2-x3)*(y1-y3))/2; end; .... s:=0; SumPlosh(x[1],y[1],x[2],y[2],x[3],y[3],s); for i:=3 to n do SumPlosh(x[1],y[1],x[i],y[i],x[i+1],y[i+1], s); write('S=',s:0:2);
Объяснение кода листинга программы
Вывод: Площадь выпуклого n-угольника вычисляется с помощью формулы через тангенс половинного угла.
- Входные данные: координаты вершин n-угольника (x1,y1), (x2,y2), (x3,y3) и переменная s для хранения суммы площадей.
- Вычисление площади с помощью формулы через тангенс половинного угла.
- С помощью цикла вычисляются площади всех треугольников, образованных вершинами n-угольника.
- Выводится значение площади S.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д