按顺时针或者逆时针顺序输入n个点,求输入点围城的多边形的面积。凸凹都可以计算。
模板
#include <iostream>
#include <cstring>
#include <string>
#include <map>
#include <set>
#include <algorithm>
#include <fstream>
#include <cstdio>
#include <cmath>
#include <stack>
#include <queue>
using namespace std;
const double Pi=3.14159265358979323846;
typedef long long ll;
const int MAXN=+;
const int dx[]={,,,,-};
const int dy[]={,-,,,};
const int INF = 0x3f3f3f3f;
const int NINF = 0xc0c0c0c0;
const ll mod=1e9+;
struct point{
double x;double y;
point (double xx,double yy):x(xx),y(yy) {}
}; double ComAre(const vector <point> &V)
{
int len=V.size();
if(len<) return 0.0;
double s=;
for(int i=;i<len;i++)
{
s+=V[i].x*V[(i+)%len].y-V[i].y*V[(i+)%len].x;
}
return fabs(s/);
} int main()
{
int n;
while(cin>>n&&n)
{
vector <point> V;
for(int i=;i<=n;i++)
{
double a,b;cin>>a>>b;
V.push_back(point(a,b));
}
double ans=ComAre(V);
printf("%.1lf\n",ans);
}
return ;
}