读书人

【c++初学者】【急】输入几个点坐标

发布时间: 2014-05-11 16:19:48 作者: rapoo

【c++菜鸟】【急!】输入几个点坐标,得出封闭多边形的面积
#include<iostream>
#include<math.h>
using namespace std ;

// 按照时针方向输入多边形顶点
// 凸多边形或凹多边形 都使用多边形面积公式
int n;// n是多边形顶点的数目
float x;
float y;// x, y分别是多边形顶点坐标的x,y坐标数组
int i;
int valeur;
float s;
void main()
{
cout<<"on va calculer Area du Polygone a n cotés"<<endl;
cout<<"please Use , to separate xi and yi/utilisez , d'ouverture xi et yi"<<endl;
cout<<"n=";//在屏幕上显示n=
cin>>valeur;//用键盘输入n的数值
n=valeur;//程序运行到这里都正确

//想要在屏幕上显示“x[i],y[i]= ”再从键盘输入x[i],y[i]的数值,跳行。然后i变为1+i,循环显示、输入
for(i=1;i<=n;i=i+1)
{cout<<"x[i],y[i]=";
cin>>"x">>" ">>"y";
cout<<endl;//运行达不到预定目的,?是否要将点坐标弄成2维向量,建立stuct?怎么实行呢?
}
}

//把上诉的点坐标值代入(点p[i]按顺时针方向排列),计算n变形面积的程序

#include<iostream>
#include<math.h>
using namespace std ;

// voucnt是多边形顶点的数目
// x, y分别是多边形顶点坐标的x,y坐标数组
// 按照逆时针方向输入多边形顶点
// 可以是凸多边形或凹多边形
// 多边形面积的计算公式如下:设有n个点(x[1],y[1])(x[2],y[2]),...(x[n],y[n])围成一个没有边相交的多边形,
//则其围成的闭合多边形面积|S| 为:
//
// n
// S=1/2 abs[∑ (xi*yi+1- xi+1*yi)]
// i=1
//其中i=1,2,...n,且当i与j除以n的余数相同的时候,x[i]=x[j],y[i]=y[j],即x[n+1]=x[1],。
//该公式用于凸凹多边形均可。 展开公式:
//S=0.5*abs(x1*y2-y1*x2+x2*y3-y2*x3+...+xn*y1-yn*x1)


//下面是网络上的计算犯法,我不知道怎么把它用起来,
//与前面写的结合成为一个按序输入点坐标就能计算得出面积,并在屏幕上显示数值

float area_of_polygon(int vcount,float x[],float y[])
{
int i;
float s;
if (vcount<3) return 0;
s=y[0]*(x[vcount-1]-x[1]);
for (i=1;i<vcount;i++)
s+=y[i]*(x[(i-1)]-x[(i+1)%vcount]);
return s/2;
}

class CMyPolygon{
CMyPoint *v;
int m_count;
public:
double area();
...
};
double CMyPoint::area()
{
double a=0.0;
if(m_count<3)return 0.0;
int i;
for(i=0;i<m_count;i++)
{
a+=(v[(i+1)%m_count].x-v[i].x)*(v[(i+1)%m_count].y+v[i].y);
}
a/=2.0;
return a;
}




//我自己写的计算面积,不过没写出来,汗!!!



int vcount;
float x[];
float y[];
int i;
float s;
void main()
{
cin>>x>>y;
if (vcount<3) { return 0;
}else{
for (i=1;i<vcount;i++) { s=o;
s+=y[i]*x[(i-1)]-x[(i)]*y[i+1];
return s;}
return fabs(s/2)

}

[解决办法]
}
/********************************************\
* *
* 计算多边形的面积 *
* 要求按照逆时针方向输入多边形顶点 *
* 可以是凸多边形或凹多边形 *
* *
\********************************************/
double area_of_polygon(int vcount,double x[],double y[],Lpoint plg[])


{
int i;
double s;
if (vcount<3) return 0;
s=plg[0].y*(plg[vcount-1].x-plg[1].x);
for (i=1;i<vcount;i++)
s+=plg[i].y*(plg[(i-1)].x-plg[(i+1)%vcount].x);
return s/2;
}

[解决办法]
帮你 顶下,偶不会呵呵!
[解决办法]
for (i=1;i<vcount;i++) { s=o;
s+=y[i]*x[(i-1)]-x[(i)]*y[i+1];
return s;}

这里写的乱七八糟的,s=0是赋初值,怎么可以放在循环里面
另外,return也不能放在循环里啊
[解决办法]
不好意思了,实在看不懂LZ写的公式.
求多边形面积不是一向使用梯形计算的吗?
线性复杂度.
[解决办法]
http://topic.csdn.net/u/20100319/15/a75ce2a9-d8f5-48be-a060-eda900b41d6e.html
代码

C/C++ code
  a[n].x=a[0].x;a[n].y=a[0].y; //(a[i].x,a[i].y)顶点i的坐标,i=0,1...n-1,n(也即0点,使多边形闭合)   s=0;   for(i=1;i<=n;i++)      s+=(a[i-1].x+a[i].x)*(a[i].y -a[i -1].y);   s=0.5*abs(s) 

读书人网 >软件架构设计

热点推荐