hdoj2036

 计算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;
}

)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值