/*
理論是可以直接數(shù)組做的
然后呢現(xiàn)在復(fù)習(xí)呀…………………… 用小demo復(fù)習(xí)c++
下面的代碼達(dá)到以下幾點(diǎn)
1.N=9好理解 好展示
2.N為一個(gè)大數(shù)時(shí),可以用于測(cè)
3.注意沒(méi)有寫(xiě)入文件 可以直接用cmd 重定向exe 到txt
*/
//http://blog.csdn.net/yanxiaolx/article/details/51986428
//http://blog.csdn.net/yanxiaolx/article/details/51986428
#include
#include
#include
#include
#include
#include
using namespace std;
const int N = 9;
double x[N] = {0,0,0,1,1,1,2,2,2};
double y[N] = {0,1,2,0,1,2,0,1,2};
double ds[N][N]= {0};
void Rand()
{
srand(time(0));
int n = 0;
while(n < N)
{
x[n] = rand()%100;
y[n] = rand()%100;
++n;
}
}
class Point
{
public:
Point(double x,double y,double ox,double oy)
:startx(x),starty(y),endx(ox),endy(oy)
{}
Point(const Point& point)
{
startx = point.startx;
starty = point.starty;
endx = point.endx;
endy = point.endy;
}
private:
double startx;
double starty;
double endx;
double endy;
friend ostream& operator<<(ostream &out,Point &point);
};
ostream& operator<<(ostream &out,Point &point)
{
out<<"("<
class List
{
public:
List(){}
~List(){}
void add(const _Ty&point)
{
List_.push_back(point);
}
bool IsExist(double s)
{
it = List_.begin();
for(;it != List_.end();++it)
{
if(s == (*it).getdistence())
{
return true;
}
}
return false;
}
bool Insert(double s,Point point)
{
it = List_.begin();
for(;it != List_.end();++it)
{
if((*it).getdistence() == s)
{
(*it).add(point);
return true;
}
}
return false;
}
void disp()
{
it = List_.begin();
for(;it != List_.end();++it)
{
(*it).disp();
}
cout< List_;
typename list<_Ty>::iterator it;
};
template
class SList
{
public:
SList(double s=0):d(s){}
~SList(){}
void add(const _Ty&point)
{
slist.push_back(point);
}
double getdistence()
{
return d;
}
void disp()
{
it = slist.begin();
cout<<"距離:"< slist;
typename list<_Ty>::iterator it;
};
void calculate()
{
double d = 0;
for(int i=0;i < N;++i)
{
for(int j=i+1;j < N;++j)
{
d = sqrt((x[i]-x[j])*(x[i]-x[j]) + (y[i]-y[j])*(y[i]-y[j]));
ds[i][j] = d;
}
}
}
void show()
{
for(int i=0;i < N;++i)
{
for(int j=0;j < N;++j)
{
cout< > List;
//Rand();
calculate();
show();
for(int i=0;i < N;++i)
{
for(int j=0;j < N;++j)
{
if(ds[i][j] != 0 )
{
if(!List.IsExist(ds[i][j]))
{
List.add(SList(ds[i][j]));
}
List.Insert(ds[i][j],Point(x[i],y[i],x[j],y[j]));
}
}
}
List.disp();
return 0;
}
/*
LINUX 下的測(cè)試 隨機(jī)數(shù)需要添加
文章名稱:計(jì)算平面中點(diǎn)間距離
本文網(wǎng)址:
http://weahome.cn/article/jdhogj.html