阅读以下说明和C++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 下面的程序用来计算并寻找平面坐标系中给定点中最近的点对(若存在多对,则输出其中的一对即可)。程序运行时,先输入点的个数和一组互异的点的坐标,通过计算每对点之

admin2013-07-03  18

问题 阅读以下说明和C++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。
    【说明】
    下面的程序用来计算并寻找平面坐标系中给定点中最近的点对(若存在多对,则输出其中的一对即可)。程序运行时,先输入点的个数和一组互异的点的坐标,通过计算每对点之间的距离,从而确定出距离最近的点对。例如,在下图所示的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>>numbe[OfPoints:
      (1)  points=new GPoint[numberOfPoints];//创建保存点坐标的数组
    memset(points,0,Sizeof(points));
    cout<<”输入”<<  numberOfPoints<<”个点的坐标:”;
    for(i=0;i    double tmpx,tmpy;
    cin>>tmpx>>tmpy;,
    points.setX(tmpx);
    points.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<numberOfPoints;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()<<”,”<<points[p1].getY()<<”)和(”;
cout<<points[p2].getX()<<”,”<delete computeDistance;
return 0:
}

选项

答案(1)Gpoint* (2)ComputeDistance * (3)number()tPoints (4)distance(points[i],points[j]) (5)shortestDistance2>tmpDistance

解析 本题考查考生使用C++语言进行面向对象程序设计的能力。首先要理解清楚题目中有关最近点对的概念和计算方法,然后阅读程序以实现该功能。
    (1)处显示创建保存点坐标的数组。这里的new运算符用于开辟数组空间,其语法规则为:new类型[初值]。(1)处需要填入一类型修饰符,因此应填入GPoint*。类似的思路,(2)处应填入ComputeDistance*。
    根据程序段中的注释,(3)和(4)处实现计算每一对点
之间的距离。(3)处为循环控制变量,因为要计算所有对点间的距离,因此应填入numberOtPoints。(4)处应调用computeDistance类的distance函数计算每一对点points和points[j]之间的距离,因此应填入distance(points,points[j])。
    (5)处应填入一个判断条件,以输出距离最小的点对。这可通过比较shortestDistance和tmpDistance来实现。因此,(5)处应填入shortestDistance>tmpDistance。
转载请注明原文地址:https://kaotiyun.com/show/gnjZ777K
0

最新回复(0)