主题:能帮我编个程序吗,
kirstyfeng
[专家分:0] 发布于 2012-08-27 21:13:00
在一个n*n的区域由随机坐标生成n个点,对这些点按它们到原点的距离从小到大进行排序,并输出结果。
麻烦各位了 会的帮个忙,感激不尽
回复列表 (共2个回复)
沙发
bruceteen [专家分:42660] 发布于 2012-08-28 08:23:00
你得告诉别人是哪步不会
板凳
kirstyfeng [专家分:0] 发布于 2012-08-29 14:13:00
我编了一个可是我想让他每次运行的结果都变 要怎么改啊!
#include <iostream.h>
#include <ctime>
#include <cstdlib>
#include <cmath>
#define n 8
class point
{
public:
point(int x=0,int y=0);
void setpoint();
friend ostream & operator<<(ostream &,const point &);
friend bool operator != (point &,point &);
int getx() {return x;}
int gety() {return y;}
double length() {return sqrt(x*x+y*y);}
private:
int x;
int y;
};
point::point(int x,int y)
{
x=0;
y=0;
}
void point::setpoint()
{
static srand((unsigned)time(0));
x=rand()%n;
y=rand()%n;
}
ostream & operator<<(ostream &output,const point &p)
{
output<<"("<<p.x<<","<<p.y<<")";
return output;
}
bool operator !=(point &a,point &b)
{
if(a.x!=b.x&&a.y!=b.y)
return true;
else return false;
}
int main()
{
point a[10];
void select(point a[]);
int i,j;
for(i=0;i<n;i++)
for(j=i+1;j<=n;)
{
a[j].setpoint();
if(a[j]!=a[i])
j++;
}
cout<<"在"<<n<<"*"<<n<<"区域中,随机取"<<n<<"个点:"<<endl;
for(i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
cout<<"它们到原点的距离从小到大的排序为:"<<endl;
select(a);
cout<<endl;
return 0;
}
void select(point a[])
{
int j,i;
point t;
for(j=0;j<n-1;j++)
for(i=0;i<n-j;i++)
if(a[i].length()>=a[i+1].length())
{
t=a[i];a[i]=a[i+1];a[i+1]=t;
}
for(i=0;i<n;i++)
{
cout<<a[i]<<":"<<a[i].length()<<" ";
}
}
我来回复