题目:
http://acm.hdu.edu.cn/showproblem.php?pid=2036
对用(按逆时针排列)描述的多边形,其面积为:
若按顺时针排列,取负数即可。
资料链接:
http://zh.wikipedia.org/wiki/%E5%A4%9A%E8%BE%B9%E5%BD%A2不知道这公式是咋推导的,网上找不到,先留着。
#include<stdio.h>
struct Point
{
int x,y;
}p[101];
double area(struct Point*a,int n)
{
double sum=0;
int i;
for(i=0;i<n;i++)
{
sum+=a[i].x*a[(i+1)%n].y-a[(i+1)%n].x*a[i].y;
}
sum=sum/2.0;
return sum;
}
int main()
{
int n,i;
while(scanf("%d",&n)!=EOF&&n!=0)
{
for(i=0;i<n;i++)
{
scanf("%d%d",&p[i].x,&p[i].y);
}
double ar;
ar=area(p,n);
printf("%.1lf\n",ar);
}
return 0;
}