直角坐标系多边形面积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。非常急,求高手帮帮忙 展开
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。非常急,求高手帮帮忙 展开
2个回答
展开全部
(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"); // 按任意键结束
}
(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"); // 按任意键结束
}
展开全部
你的公式似乎不掘备对。
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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询