GitBook

这里写图片描述 这里写图片描述

求任意多边形的面积 当时还没学叉积什么的

一个小技巧是通过 i+1%n 来让最后一个点与第一个点相连

#include<stdio.h>
struct node {
	int x,y;
} a[120];
double f(int x1,int y1,int x2,int y2) {
	return double(x1*y2-x2*y1);
}
int main() {
	int n;
	while(scanf("%d",&n),n) {
		for(int i=0; i<n; i++) {
			scanf("%d %d",&a[i].x,&a[i].y);
		}
		double res=0;
		for(int i=0; i<n; i++) {
			res+=f(a[i].x,a[i].y,a[(i+1)%n].x,a[(i+1)%n].y);
		}
		printf("%.1lf\n",res/2.0);
	}
	return 0;
}

参考文章: 任意多边形面积计算 - 专业思考与实践者 任意多边形的面积公式 - 菜头 任意多边形面积的求解 - songgaoyong - ChinaUnix博客

题目地址:【杭电】[2036]改革春风吹满地