题意:你懂得。
析:没什么可说的,求面积用叉乘,尽量不要用海伦公式,因为计算量大,而且精度损失。
代码如下:
#include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <set> #include <vector> #include <algorithm> using namespace std; const int maxn = 100 + 5; int x[maxn], y[maxn]; int cross(int x1, int y1, int x2, int y2){ return x1 * y2 - x2 * y1; } int main(){ int n; while(scanf("%d", &n) == 1 && n){ for(int i = 0; i < n; ++i) scanf("%d %d", &x[i], &y[i]); x[n] = x[0]; y[n] = y[0]; double s = 0.0; for(int i = 0; i < n; ++i) s += cross(x[i], y[i], x[i+1], y[i+1]); printf("%.1lf ", s/2.0); } }