任意多边形面积模板

时间:2022-11-24 22:38:30
/*
n个点,按照顺时针或逆时针给出,然后求面积。
*/


#include<cstdio>
#include<algorithm>
#include<vector>
#include<math.h>

using namespace std;
const int maxn =105;
typedef struct node
{
double x,y;
}node;
node a[maxn];

double cal(node x,node y,node z)
{
return (y.x-x.x)*(z.y-x.y)-(y.y-x.y)*(z.x-x.x);
}

int main()
{
// freopen("input.txt","r",stdin);
int n;
while(~scanf("%d",&n)){
if(n==0) break;
for(int i=0;i<n;i++){ //初始化
scanf("%lf%lf",&a[i].x,&a[i].y);
}
double sum=0;
for(int i=1;i<n-1;i++) //计算
sum+=cal(a[0],a[i],a[i+1]);
printf("%.1lf\n",sum/2.0);
}
return 0;
}

例题:改革春风吹满地