此题关键是要会计算在坐标系下任意多边形的面积,公示为
其中i=1,2,…,n;且当i=n时,上式中的行列式第二行为x0和y0。
#include<iostream>
#include<vector>
#include<iomanip>
using namespace std;
struct cord
{
double x,y;
};
int main()
{
int n;
while(cin>>n&&n){
int n1=n;
cord val;
vector<cord> vec;
while(n1--){
cin>>val.x>>val.y;
vec.push_back(val);
}
double area=0.0;
for(int i=0;i<n;++i){
if(i==n-1)
area+=vec[i].x*vec[0].y-vec[0].x*vec[i].y;
else
area+=vec[i].x*vec[i+1].y-vec[i+1].x*vec[i].y;
}
area/=2;
cout<<fixed<<setprecision(1)<<area<<endl;
}
return 0;
}