编程根据五边形五个顶点的坐标计算五边形面积

用C++做
2024-12-28 19:49:28
推荐回答(1个)
回答1:

#include
#include
#include "math.h"
using namespace std;
typedef vector::iterator iter;
double length(iter &iterFir,iter &iterSec)
{
return sqrt(pow(*iterSec-*iterFir,2)+pow(*(iterSec+1)-*(iterFir+1),2));
};
double compute(iter &iterFir,iter &iterSec,iter &iterThi)
{
double a,b,c,d;
a=length(iterFir,iterSec);
b=length(iterSec,iterThi);
c=length(iterThi,iterFir);
if(a+b>c&&a+c>b&&b+c>a)
{
d=(pow(a,2)+pow(c,2)-pow(b,2))/(2*a*c);
d=sqrt(1-pow(d,2));
return (0.5*a*c*d);
}
else
{
cerr<<"the data is wrong!";
return 0;
};
};
int main()
{
cout<<"请按照顺时间次序输入X,Y: "< double xpos,ypos,S(0),ret(0);
vectorvecFir;
while (cin>>xpos>>ypos)
{
vecFir.push_back(xpos);
vecFir.push_back(ypos);
};
vector::iterator iterFir=vecFir.begin();
vector::iterator iterSec=iterFir+2;
vector::iterator iterThi=iterFir+4;
while(iterThi!=vecFir.end())
{
ret=compute(iterFir,iterSec,iterThi);
if(ret)
S+=ret;
else
break;
iterSec+=2;
iterThi+=2;
};
cout< return 0;
};
此程序只能是凸图象才正确,否则计算出来的是错误的.我也想编一个可以自动判别是否是凸图形的程序,不过越想越复杂.不过我们的图形大部分是凸的图形,即使是凹图形,只要认为的分为几个凸图形就可以计算了,这么程序可以计算N边型,只要是凸的就可以了._______坚决要求奖励