#include <iostream>
#include <string>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
int n;
int x[100],y[100];
double are;
while (cin >> n)
{
if (n == 0)
return -1;
are = 0;
for (int i = 0; i < n; i++)
cin >> x[i] >> y[i];
for (int i = 0; i < n-1; i++)
are+= abs(x[i] * y[i + 1] - x[i + 1] * y[i]);
are += abs(x[n-1] * y[0] - x[0] * y[n-1]);
are =0.5*are;
cout.precision(1);
cout << fixed << are << endl;
}
return 0;
#include <string>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
int n;
int x[100],y[100];
double are;
while (cin >> n)
{
if (n == 0)
return -1;
are = 0;
for (int i = 0; i < n; i++)
cin >> x[i] >> y[i];
for (int i = 0; i < n-1; i++)
are+= abs(x[i] * y[i + 1] - x[i + 1] * y[i]);
are += abs(x[n-1] * y[0] - x[0] * y[n-1]);
are =0.5*are;
cout.precision(1);
cout << fixed << are << endl;
}
return 0;
}
公式:转自https://blog.youkuaiyun.com/as3asddd/article/details/49666895
有个问题:绝对值之和与和的绝对值应该不一样吧,为什么这里两种算法结果一样