HDU 2036 多边形的面积
来源:互联网 发布:2017网络歌曲 编辑:程序博客网 时间:2024/05/29 13:44
以下两种方法求多边形面积:一:#include <iostream>#include <cstring>#include <string>#include <cstdio>#include <cmath>using namespace std;const int maxn=105;int n;struct node{ double x; double y;}p[maxn];double area(node p[],int n){ double ans=0; int i; for(i=1; i<=n; i++) { ans+=p[i-1].x*p[i%n].y-p[i-1].y*p[i%n].x; } return fabs(ans/2.0);}int main(){ int i; while(~scanf("%d",&n),n) { for(i=0; i<n; i++) { cin>>p[i].x>>p[i].y; } double sum; sum=area(p,n); printf("%.1lf\n",sum); } return 0;}二:#include <iostream>#include <cstring>#include <string>#include <cstdio>#include <algorithm>using namespace std;int n;struct node{ double x; double y;};double area(node p1,node p2,node p3){ double ans; ans=p1.x*p2.y+p2.x*p3.y+p3.x*p1.y-p2.x*p1.y-p3.x*p2.y-p1.x*p3.y; return ans/2.0;}int main(){ node p1,p2,p3; int i; double sum; while(scanf("%d",&n),n) { sum=0; scanf("%lf%lf",&p1.x,&p1.y); scanf("%lf%lf",&p2.x,&p2.y); for(i=3; i<=n; i++) { scanf("%lf%lf",&p3.x,&p3.y); sum+=area(p1,p2,p3); p2=p3; } printf("%.1lf\n",sum); } return 0;}