計算由N個點構成的簡單多邊形面積。不考慮可能存在的邊相交以及島洞等複雜情況。
計算公式:
S(N1,N2,N3…Nn)=0.5abs[(x1y2-y1x2)+(x2y3-y2x3)…+(xny1-yn*x1)]
(為什麼是這公式我也不知道)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i,k;
int x[1000],y[1000];
double sum=0;
double area=0.0;
printf("請輸入點的個數:\n");
which(scanf("%d",&n) && n!=0)
{
printf("請輸入點的坐标,示例:1 2\n");
for(i=0; i<n; i++)
{
scanf("%d %d",&x[i],&y[i]);
}
for(i=0; i<=n-1; i++)
{
sum=sum+(x[i]*y[i+1]-x[i+1]*y[i]);
}
sum=sum+(x[n]*y[0]-y[n]*x[0]);
area=0.5*abs(sum);
printf("%.2lf\n",area);
}
}
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL3kTN1IzN1cTM1ITMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)