#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
有个问题:绝对值之和与和的绝对值应该不一样吧,为什么这里两种算法结果一样
本文介绍了一种使用C++编程语言来计算平面内由一系列坐标点构成的多边形面积的方法。通过遍历所有顶点并利用叉乘计算每条边对应的平行四边形面积的一半,最终累加得到整个多边形的总面积。该算法巧妙地利用了绝对值的性质,使得无论多边形的方向如何,都能准确计算其面积。
1463





