Найти площадь выпуклого 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-угольника вычисляется с помощью формулы через тангенс половинного угла.

  1. Входные данные: координаты вершин n-угольника (x1,y1), (x2,y2), (x3,y3) и переменная s для хранения суммы площадей.
  2. Вычисление площади с помощью формулы через тангенс половинного угла.
  3. С помощью цикла вычисляются площади всех треугольников, образованных вершинами n-угольника.
  4. Выводится значение площади S.

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


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

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

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