求多边形面积,以此作为模板:


#include <iostream>
#include <cstdio>
using namespace std;
struct point{
int x,y;
point operator -(const point &b)
{
return (point){this->x - b.x,this->y - b.y};
}
}p[102];
int crossmul(point a,point b)
{
return a.x*b.y-a.y*b.x;
}
int main()
{
int i,n;
while(~scanf("%d",&n)&&n)
{

for(i=0;i<n;i++)
{
scanf("%d%d",&p[i].x,&p[i].y);
}
if(n<3){printf("0.0\n");continue;}
int area2=0;
for(i=1;i<n-1;i++)
area2+=crossmul(p[i]-p[0],p[i+1]-p[0]);
if(area2<0)
area2=-area2;
printf("%.1lf\n",1.0*area2/2);
}
return 0;
}