公式: 求任意多边形的面积
适用条件:已知各个顶点的坐标,以其中一点为开始的点,顺时针(或逆时针)依次标出各顶点坐标。
例任意六边形(X0,Y0),(X1,Y1),(X2,Y2),(X3,Y3),(X4,Y4),(X5,Y5).
图片来源:网络
代表性题目:杭电100题二P题:改革春风吹满地
样例代码:
#include<stdio.h>
#define N 101
struct point{
int x;
int y;
}pot[N];
int main()
{
double area;
int i,n;
while(~scanf("%d",&n))
{
if(n==0)
break;
area=0.0;
for(i=0;i<n;i++)
scanf("%d%d",&pot[i].x,&pot[i].y);
for(i=0;i<n-1;i++)
area+=(double)1/2*(pot[i].x*pot[i+1].y-pot[i+1].x*pot[i].y);
printf("%.1lf\n",area-(double)1/2*(pot[0].x*pot[n-1].y-pot[n-1].x*pot[0].y));
}
return 0;
}