【杭电】[2036]改革春风吹满地

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

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

一个小技巧是通过 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]改革春风吹满地

posted @ 2016-04-04 07:09  BoilTask  阅读(10)  评论(0编辑  收藏  举报