试题五(共15分)
阅读以下说明和C++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。
【说明】
下面的程序用来计算并寻找平面坐标系中给定点中最近的点对(若存在多对,则输出其中的一对即可)。程序运行时,先输入点的个数和一组互异的点的坐标,通过计算每对点之间的距离,从而确定出距离最近的点对。例如,在图5-1所示的8个点中,点(1,1)与(2,0.5)是间距最近的点对。
【C++代码】
#include
#include
using namespace std;
class GPoint {
private:
double x, y;
public:
void setX(double x) { this->x = x; }
void setY(double y) { this->y = y; }
double getX() { return this->x; }
double getY() { return this->y; }
};
class ComputeDistance {
public:
double distance(GPoint a,GPoint b) {
return sqrt《a.getX() - b.getX())*(a.getX() - b.getX())
+ (a.getY() - b.getY())*(a.getY() - b.getY()));
}
};
int main()
{
int i,j, numberOfPoints=0;
cout<<"输入点的个数:";
cin>>numberOfPoints;
(1) points= neW GPoint[numberOfPoints];//创建保存点坐标的数组
memset(points,0,sizeof(points));
cout<<"输入"<< numberOfPoints<<"个点的坐标:";
for(i=0;i double tmpx, tmpy; cin>>tmpx>>tmpy; points[i].setX(tmpx); points[i].setY(tmpy); } (2) computeDistance= new ComputeDistance(); int p1=0,p2=1;//p1和p2用于表示距离最近的点对在数组中的下标 double shortestDistance= computeDistance->distance(points[p1], points[p2]); //计算每一对点之间的距离 for(i=0;i for(j=i+1;j< (3) ;j++){ double tmpDistance=computeDistance-> (4) ; if ( (5) ) { p1=i; p2 =j; shortestDistance= tmpDistance; } } } cout<<"距离最近的点对是:("; cout"points[p1].getX()<<","< cout< delete computeDistance; return 0: }
订单号:
遇到问题请联系在线客服
订单号:
遇到问题请联系在线客服