Case 1: 0.5
提示:模拟计算方式;
代码:
#include <stdio.h>
#include<math.h>
double fac(double e,double r,double t)
{
double q=(e+r+t)/2,w;
w=sqrt(q*(q-e)*(q-r)*(q-t));
return w;
}
int main()
{
int b,c,d,n,q,j,i=0;
double e,r,t,w;
double a[50],y[50];
scanf("%d",&n);
while(n--)
{
w=0;//表示是三角形的面积之和
scanf("%d",&q);
for(j=0;j<q;j++)
scanf("%lf %lf",&a[j],&y[j]);//录入每个点
for(d=0;d<=q-3;d++)//控制第一点的循环
{
for(b=d+1;b<=q-2;b++)//控制第二点的循环
{
for(c=b+1;c<=q-1;c++)//控制第三点的循环
{
e=sqrt((a[d]-a[b])*(a[d]-a[b])+(y[d]-y[b])*(y[d]-y[b]));
r=sqrt((a[d]-a[c])*(a[d]-a[c])+(y[d]-y[c])*(y[d]-y[c]));
t=sqrt((a[c]-a[b])*(a[c]-a[b])+(y[c]-y[b])*(y[c]-y[b]));//算任意三个点的组成三角形的边长
if((e+r>t)&&(e+t>r)&&(r+t>e))//判断是否能构成三角形
w=w+fac(e,r,t);//求三角行的面积海伦公式
}
}
}
printf("Case %d: %.1lf\n",i+1,w);
i++;
}
return 0;
}