直角坐标系多边形面积c++代码,在线等,急~~~~~~~~

#include<iostream.h>voidmain(){doubleX1,Y1,X2,Y2,X3,Y3;doubleS=0;cin>>X1>>Y1;cin>>X2>... #include<iostream.h>
void main()
{
double X1,Y1,X2,Y2,X3,Y3;
double S=0;
cin>>X1>>Y1;
cin>>X2>>Y2;
while (cin>>X3>>Y3)
{
S+=X2*(Y3-Y1);
X1=X2;
Y1=Y2;
X2=X3;
Y2=Y3;
}
cout<<0.5*S;
}
上面是我自己写的,但有计算错误,数据是(375.12,120.51)(480.63, 257.45)(250.78,425.92)(175.72,210.83)根据公式S=0.5*∑X1*(Yi+1 - Yi-1)这是一个累加,从i=1,到n。非常急,求高手帮帮忙
展开
 我来答
confuciuskg
2009-04-14 · TA获得超过1285个赞
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:276万
展开全部
(1)你源程序可读性和交互物迹性都不太好,面积计算算法也有问题。我给你重写了一遍,详细见注释,你拿去运行一下吧:
(2)另外你的公式应该为:S=0.5*∑Xi*(Yi+1 - Yi-1) // 其中Xi由于你的笔误写成了X1

#include<iostream>
using namespace std;
struct POINT{ // 直角坐标系下的点结构
double x;
double y;
};
double PolygonArea(POINT* pVertex, int NUM){ // 计算多边形面积
double fArea = 0;
for(int i = 0; i < NUM - 1; i++){
fArea += (0.5 * (pVertex[i].x * pVertex[i + 1].y - pVertex[i].y * pVertex[i + 1].x));}
return fArea;
}
void main()
{
const int NUM = 4; // 要改变多边形的顶点数目,修改这个数字即可
POINT vertex[NUM]; // 多边形顶点数组
cout << "罩饥并Please input " << NUM << " POINTS.\n";
// 从屏幕中获取多边形顶点数组,按提示输入即可
for(int i = 0; i < NUM; i++){
cout << "Please input POINT[" << i + 1 << "].x: ";
cin >> vertex[i].x;
cout << "Please input POINT[" << i + 1 << "].y: ";
cin >> vertex[i].y;
}
cout << "The area of the polygon is : " << PolygonArea(vertex, NUM) << endl; /肢明/ 输出多边形面积
system("PAUSE"); // 按任意键结束
}
prctaotao
2009-04-14 · TA获得超过237个赞
知道小有建树答主
回答量:247
采纳率:0%
帮助的人:122万
展开全部
你的公式似乎不掘备对。
struct Point
{
double x, y;
Point(double a = 0, double b = 0)
{
x = a; y = b;
}
};

Point pp[10];

double GetArea(Point *pp, int n)
{//n为点的个数,pp中记录的是点宴散告晌明的坐标

int i = 1;
double t = 0;

for(; i <= n-1; i++)
t += pp[i-1].x*pp[i].y - pp[i].x*pp[i-1].y;
t += pp[n-1].x*pp[0].y - pp[0].x*pp[n-1].y;

if(t < 0) t = -t;
return t/2;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式