欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

求任意多边形的面积

程序员文章站 2022-03-30 13:49:43
...

首先告诉你求n多边形面积的公式是:
S=1/2((x1y2-x2y1)+(x2y3-x3y2)+…+(xn-1yn-xnyn-1))
此公式适用于求任意n多边形的面积,甚至有时可以解决,判断多边形顶点的输入顺序,即顺时针或逆时针,看下面代码会给你讲解怎么判断,其实很简单
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2036
代码如下:

#include<stdio.h>
struct node
{
	double x;
	double y;
}pot[20000];
int main()
{
	int n;
	while(scanf("%d",&n),n!=0)
	{
		for(int i=0;i<n;i++)
			scanf("%lf%lf",&pot[i].x,&pot[i].y);
		 double sum=0;
		 pot[n].x=pot[0].x;
		 pot[n].y=pot[0].y; 	
		 for(int i=0;i<n;i++)
		 sum+=(pot[i].x*pot[i+1].y-pot[i+1].x*pot[i].y);
		 sum=sum/2;//如果哟啊判断给定的多边形顶点的输入顺序,只需判断sum的正负,如果sum大于0则为逆时针输入的,否则为顺时针输入的
		 printf("%.1lf\n",sum);
	}
	return 0;
}