#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int n,i,a[200][200];
double sum;
while(scanf("%d",&n)!=EOF){
if(n==0)break;
for(i=0;i<n;i++)
scanf("%d%d",&a[i][0],&a[i][1]);
sum=0;
for(i=0;i<n-1;i++)
sum+=a[i][0]*a[i+1][1]-a[i+1][0]*a[i][1];
sum+=a[n-1][0]*a[0][1]-a[n-1][1]*a[0][0];
printf("%.1lf\n",0.5*sum);
}
{
int n,i,a[200][200];
double sum;
while(scanf("%d",&n)!=EOF){
if(n==0)break;
for(i=0;i<n;i++)
scanf("%d%d",&a[i][0],&a[i][1]);
sum=0;
for(i=0;i<n-1;i++)
sum+=a[i][0]*a[i+1][1]-a[i+1][0]*a[i][1];
sum+=a[n-1][0]*a[0][1]-a[n-1][1]*a[0][0];
printf("%.1lf\n",0.5*sum);
}
return 0;
}
}
套用三角形的面积向量表达式s=0.5*|x1*y2-x2*y1|;
然后将多边形的点逆时针旋转,以原点为定点,原点与多边形上每两个组成两个向量求三角形面积,
然后累加,最后得出结果;
n边形面积公式:s=0.5*(|_x0*y1-x1*y2|+|x1*y2-x2*y1|+........+|xn-1*y0-yn-1*x0|);