题意:求多边形面积。
首先 对于两个向量 P,Q。P * Q = 1/2*area;
以原点作为每条向量边的起始点,然后在遍历一遍所有的点,得到res
这样在算面积的时候 多余的部分会在计算过程中 正负抵消 so 能得到sum_area
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<stdio.h> 2 #include<math.h> 3 const int maxn = 105; 4 int n; 5 struct node{ 6 int x,y; 7 }a[ maxn ]; 8 9 double cross( node a,node b ){ 10 return 1.0*a.x*b.y-1.0*a.y*b.x; 11 } 12 13 double get_area( ){ 14 double res=0; 15 res=cross( a[ n-1 ],a[ 0 ] ); 16 for( int i=1;i<n;i++ ) 17 res+=( cross( a[ i-1 ],a[ i ] ) ); 18 return res/2.0; 19 } 20 21 int main(){ 22 while( scanf("%d",&n),n ){ 23 for( int i=0;i<n;i++ ){ 24 scanf("%d%d",&a[ i ].x,&a[ i ].y); 25 } 26 double sum=get_area( ); 27 printf("%.1lf\n",sum); 28 } 29 return 0; 30 }