计算n边形面积的问题可转化为求(n-2)个三角形的面积的问题
在计算三角形的面积时
若已知三角形的各边长用秦九韶公式求解
若已知三角形各顶点的坐标用一下公式S=(c-e)(b-d)-(c-e)(f-d)/2 - (a-e)(b-f)/2 - (c-a)(b-d)/2((a,b),(c,d),(e,f)为三顶点坐标
#include<stdio.h>
#include<math.h>
/*double square(int a,int b,int c,int d,int e,int f)
{
double i,j,k;
i=(double)((a-c)*(a-c)+(b-d)*(b-d));
j=(double)((a-e)*(a-e)+(b-f)*(b-f));
k=(double)((e-c)*(e-c)+(f-d)*(f-d));
return sqrt((i*j-((i+j-k)/2.0)*((i+j-k)/2.0))/4.0);
}*/
double square(int a,int b,int c,int d,int e,int f)
{
return (double)(a*d+e*b+c*f-c*b-a*f-e*d)/2.0;
}
int main()
{
int n,i,j,k,a[100],b[100];
double s;
while(scanf("%d",&n)!=EOF)
{
s=0;
if(n==0)
break;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
scanf("%d",&b[i]);
}
for(i=0;i<n-2;i++)
{
s+=square(a[i],b[i],a[i+1],b[i+1],a[n-1],b[n-1]);
}
printf("%.1lf\n",s);
}
return 0;
}
)