主要要知道多边形面积计算公式。利用叉乘计算面积,得出的面积是以两条边确定得平行四边形的面积,所以最后应该减半。同时,算出来的结果时有向面积,逆时针给出坐标,得到结果为正,顺时针给出坐标,得到结果为负。
#include<stdio.h>
#include<math.h>
#include<iostream>
#include<algorithm>
using namespace std;
double area(int *xx,int *yy,int nn)
{
double ans=0;
xx[nn]=xx[0],yy[nn]=yy[0];
for(int i=0; i<nn; i++)
ans+=(xx[i]*yy[i+1]-xx[i+1]*yy[i])*0.5;
return ans;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF&&n)
{
int x[105],y[105];
for(int i=0; i<n; i++)
scanf("%d%d",&x[i],&y[i]);
double ans=area(x,y,n);
printf("%.1lf\n",ans);
}
return 0;
}