首页
登录
从业资格
阅读以下说明和c++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。 【说
阅读以下说明和c++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。 【说
练习题库
2022-08-02
35
问题
阅读以下说明和c++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。【说明】下面的程序用来计算并寻找平面坐标系中给定点中最近的点对(若存在多对,则输出其中的一对即可)。程序运行时,先输入点的个数和一组互异的点的坐标,通过计算每对点之间的距离,从而确定出距离最近的点对。例如,在图 5-1 所示的8个点中,点(1,1) 与(2,0.5)是间距最近的点对。
【C++代码】#include <iostream>#include <cmath>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 < numberOfPoints; 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[pl] .gety()<<")和(" ; cout << points [p2].getX () << "," << points [p2].gety () << ")" << endl; delete computeDistance; return 0;}
选项
答案
解析
(1)GPoint *(2)ComputeDistance*(3)numberOfPoints(4)distance(points
,points[j])(5)shortestDistance > tmpDistance本题考查 C++语言程序设计的能力,涉及类、对象、函数的定义和相关操作。要求考生根据给出的案例和执行过程说明,认真阅读理清程序思路,然后完成题目。先考察题目说明。计算平面或空间中点之间的距离是目前很多应用中需要的,如 GPS 计算等。本题目简化了点之间距离的要求,其主要任务是计算井寻找平面坐标系中给定点中最近的点对(若存在多对,则输出其中的一对即可)。数轴上两点之间的距离等于相应两数差的绝对值,而平面坐标系中两点之间的距离等于相应两点的横坐标差和纵坐标差的平方和的算数平方根。假设平面左边系中的两点P1(X1,Yl)和P2(X2 ,Y2) ,两者之间的距离
如题中图 5-1 所示的 8 个点中,点 (1,1)和(2,0.5) 之间的距离为
根据说明,点是一种类型,设计为类GPoint,点之间的距离设计为类ComputeDistance ,整体主逻辑代码在main函数中实现。类设计时,一般将属性设置为private,而对其的获取和更改等操作通过其中public方法进行。因此,在GPoint设计时,将x和y坐标设计为 private属性,将读取和设置 x 和 y 坐标的值设计为相应的get和set函数;在设计点之间的距离类ComputeDistance时,将两个 GPoint类的对象作为distance函数的参数传递。main函数中实现控制流程,在程序运行时,先输入点的个数,创建相应大小的数组,再输入相应个数的一组互异的点的坐标,将点保存在一个数组中。C++中定义指向对象数组的指针的创建方式为ClassName * varName = new ClassName[numberOfArray];用new创建对象数据返回的是指针类型,此处需要ClassName*。然后在对数组内存空间清零之后,输入相应个数的互异的点的坐标,存入点数组,然后通过计算每对点之间的距离,从而确定距离最近的点对。其计算方式是:预设定第一次参与运算的两个点之间的距离为最短距离,然后计算每一对点之间的距离,其计算过程为从第一个点开始依次和其后所有的点之间调用两点之间距离计算函数计算其他点之间距离,每次计算和设定的最短距离进行比较,如果比当前最短距离短,则更新最短距离并记录相应的点。最后输出所记录的最短距离和相应的点。因此,空(1)需要指向 GPoint 类型的对象数组的指针,即为 GPoint*;空(2)需要计算两点之间距离的对象,用new创建,所以 ComputeDistance *;空(3)处判定是否所有与当前点还没有比较过的点之间的距离都计算完成,因为当前点和在数组前面的点的比较在前面计算时已经计算过,所以从和后一个点计算直到数组的最后一个点计算完成,即j<numberOfPoints,即空(3)为numberOfPoints; 空(4)处调用computeDistance的distance函数,计算当前循环的两个点之间的距离,即 distance(points
,points [j]);空(5)处通过判定计算出的当前两个点之间的距离和当前最短距离,来判定是否需要更新当前最短距离,即 shortestDistance > tmpDistance 。
转载请注明原文地址:https://tihaiku.com/congyezige/2427343.html
本试题收录于:
初级程序员题库软件水平考试初中高级分类
初级程序员
软件水平考试初中高级
相关试题推荐
IE浏览器能够正确解析()代码。A.ASP B.HTML C.JSP D
在网页中创建一个如下图所示的表单控件的HTML代码是()。 A.<input
通过内部发起连接与外部主机建立联系,由外部主机控制并盗取用户信息的恶意代码为(
下面的XML代码段中,语法正确的是()。A.<!-xml示例-!><?xml
下列设置图像地图正确的HTML代码是()。A.<areashape="po
()是正确的网页代码结构。A.<html></html><head><
阅读一下说明,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】
阅读一下说明,回答问题1至问题4.将解答填入答题纸对应的解答栏内。 【说明】
阅读以下说明,回答问题1至问题5,将解答填入答题纸对应的解答栏内。 【说明】
阅读以下说明,回答问题1至问题4,将答案填入答题纸对应的解答栏内。(注:此题为思
随机试题
[originaltext](32)Howmenfirstlearnttoinventwordsisunknown,inoth
某企业主要生产电子芯片产品,近年来随着业务发展,应收账款余额及负债规模逐年上升,
确诊不明原因性不孕首先选用A.输卵管通液试验 B.腹腔镜子宫镜联合检查 C.
患者,男,58岁。突然出现左腰部疼痛,剧烈难忍受,且向下腹部放射,伴有血尿。查体
关于多用电表的使用,下列说法中正确的是( )。A.多用电表的欧姆挡的每一量程的
细粉的筛分一般使用A.冲眼筛 B.编织筛 C.金属筛 D.农业用筛
、下列方法中,可以用于价值工程方案创造的有( )。 A、功能成本法 B、
为提高昏迷病人插胃管的成功率,在插管前应采取的措施是A.将病人的头后仰 B.使
A期货公司准备从事投资咨询业务,如果该期货公司成功申请并从事期货投资咨询业务后,
委托方将收回的委托加工应税消费品,用于连续生产符合规定可以抵扣已纳消费税的应税消
最新回复
(
0
)