计算平面中点间距离
/*理论是可以直接数组做的然后呢现在复习呀……………………用小demo复习c++下面的代码达到以下几点1.N=9好理解好展示2.N为一个大数时,可以用于测3.注意没有写入文件可以直接用cmd重定向exe到txt*///http://blog.csdn.net/yanxiaolx/article/details/51986428//http://blog.csdn.net/yanxiaolx/article/details/51986428#include<iostream>#include<list>#include<cmath>#include<iomanip>#include<stdio.h>#include<stdlib.h>usingnamespacestd;constintN=9;doublex[N]={0,0,0,1,1,1,2,2,2};doubley[N]={0,1,2,0,1,2,0,1,2};doubleds[N][N]={0};voidRand(){srand(time(0));intn=0;while(n<N){x[n]=rand()%100;y[n]=rand()%100;++n;}}classPoint{public:Point(doublex,doubley,doubleox,doubleoy):startx(x),starty(y),endx(ox),endy(oy){}Point(constPoint&point){startx=point.startx;starty=point.starty;endx=point.endx;endy=point.endy;}private:doublestartx;doublestarty;doubleendx;doubleendy;friendostream&operator<<(ostream&out,Point&point);};ostream&operator<<(ostream&out,Point&point){out<<"("<<point.startx<<","<<point.starty<<")"<<""<<"("<<point.endx<<","<<point.endy<<")";returnout;}template<class_Ty>classList{public:List(){}~List(){}voidadd(const_Ty&point){List_.push_back(point);}boolIsExist(doubles){it=List_.begin();for(;it!=List_.end();++it){if(s==(*it).getdistence()){returntrue;}}returnfalse;}boolInsert(doubles,Pointpoint){it=List_.begin();for(;it!=List_.end();++it){if((*it).getdistence()==s){(*it).add(point);returntrue;}}returnfalse;}voiddisp(){it=List_.begin();for(;it!=List_.end();++it){(*it).disp();}cout<<endl;}private:list<_Ty>List_;typenamelist<_Ty>::iteratorit;};template<typename_Ty=Point>classSList{public:SList(doubles=0):d(s){}~SList(){}voidadd(const_Ty&point){slist.push_back(point);}doublegetdistence(){returnd;}voiddisp(){it=slist.begin();cout<<"距离:"<<d<<endl;for(;it!=slist.end();++it){cout<<*it<<endl;}}private:doubled;list<_Ty>slist;typenamelist<_Ty>::iteratorit;};voidcalculate(){doubled=0;for(inti=0;i<N;++i){for(intj=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;}}}voidshow(){for(inti=0;i<N;++i){for(intj=0;j<N;++j){cout<<setw(6)<<ds[i][j]<<"";}cout<<endl;}}intmain(){List<SList<Point>>List;//Rand();calculate();show();for(inti=0;i<N;++i){for(intj=0;j<N;++j){if(ds[i][j]!=0){if(!List.IsExist(ds[i][j])){List.add(SList<Point>(ds[i][j]));}List.Insert(ds[i][j],Point(x[i],y[i],x[j],y[j]));}}}List.disp();return0;}/*LINUX下的测试随机数需要添加
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。