利用多边形(n边形)面积计算公式:S=0.5 * ( (x0*y1-x1*y0) + (x1*y2-x2*y1) + ... + (xn*y0-x0*yn) ),
其中点(x0,y0), (x1, y1), ... , (xn,,yn)为多边形上按逆时针顺序的顶点((x0,y0)与(xn,yn)为同一点)。
- #include<stdio.h>
- #include<math.h>
- #include<string.h>
- main()
- {
- int n,x1,y1,x2,y2,i,x,y;
- double sum;
- while(scanf("%d",&n)&&n)
- {
- sum=0;
- scanf("%d %d",&x1,&y1);
- x=x1;y=y1;
- for(i=0;i<n-1;i++)
- {
- scanf("%d %d",&x2,&y2);
- sum+=(x1*y2-x2*y1);
- x1=x2;
- y1=y2;
- }
- sum+=(x1*y-y1*x);
- printf("%.1lf\n",sum*0.5);
- }
- }