So Easy[II]
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
2
-
描述
-
这是一道基础的计算几何问题(其实这不提示大家也都看的出)。问题描述如下:
给你一个N边形。且N边形的点是由顺时针顺序给出,求这个N边形的面积。(3<N<100)
-
输入
-
输入多组数据。
第一行输入一个N。
接下来N行每行有两个数a,b表示一个点。0<a,b<100(不会出现重复的点)
输出
- 输出N变形的面积,最终结果保留两位小数。(不要输出多余的信息) 样例输入
-
3 78 28 94 19 35 97
样例输出
-
358.50
-
三点构成一个三角形,不用海伦公示,用(x0*y1+x2*y0+x1*y2-x2*y1-x0*y2-x1*y0)/2.0;(根据行列式计算得来)
-
#include<stdio.h> double a[120],b[120]; int main() { int n; while(scanf("%d",&n)!=-1) { for(int i=0;i<n;i++) { scanf("%lf%lf",&a[i],&b[i]); } double we=a[0],ni=b[0]; double q=a[1],w=b[1]; double sum=0,ha; for(int i=2;i<n;i++) { ha=(we*w+a[i]*ni+q*b[i]-a[i]*w-we*b[i]-q*ni)/2.0; sum+=ha; q=a[i],w=b[i]; } printf("%.2lf\n",sum>0?sum:-sum); } }
-
输入多组数据。