计算多边形面积的问题
输入数据包含多个测试实例,每个测试实例占一行,每行的开始是一个整数n(3<=n<=100),它表示多边形的边数(当然也是顶点数),然后是按照逆时针顺序给出的n个顶点的坐标(x1, y1, x2, y2... xn, yn),为了简化问题,这里的所有坐标都用整数表示。输入数据中所有的整数都在32位整数范围内,n=0表示数据的结束,不做处理。
对于每个测试实例,请输出对应的多边形面积,结果精确到小数点后一位小数。
每个实例的输出占一行。
代码为:
#include <stdio.h>
#include <math.h>
double changdu(double x1,double y1,double x2,double y2);
int main ()
{
double x[200],y[200];
int i,j,n;
double a,b,c,s,sum;
while (scanf("%d",&n)&&n!=0)
{
for (i=0;i<n;i++)
{
scanf("%lf%lf",&x[i],&y[i]);
}
sum=0;
for(i=2;i<n;i++)
{
a=changdu(x[i],y[i],x[0],y[0]);
b=changdu(x[i-1],y[i-1],x[0],y[0]);
c=changdu(x[i],y[i],x[i-1],y[i-1]);
s=(a+b+c)/2;
sum=sum+sqrt(s*(s-a)*(s-b)*(s-c));
}
printf("%.1lf\n",sum);
}
return 0;
}
double changdu(double x1,double y1,double x2,double y2)
{
double a,b,c;
a=pow(x1-x2,2);
b=pow(y1-y2,2);
c=sqrt(a+b);
return c;
}
为什么答案正确但判断系统总是说:
time usage over 1010.000000