首页
登录
从业资格
阅读以下说明和c++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。 【说
阅读以下说明和c++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。 【说
练习题库
2022-08-02
39
问题
阅读以下说明和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,将答案填入答题纸对应的解答栏内。(注:此题为思
随机试题
Whatisthemostimportantfunctionoftrees?[br][originaltext]Treesare
Asstateandfederalauthoritiesannouncedthedetailsoftheir$26billion
TheEclipseofFreudSigmundFreudisrightlyregardedas
Itmaybepossibletobuildcomputersthatcanrememberalotmorethanthehuma
[originaltext]Wethinkofaerobicsasbeingahighimpactactivitybutactually
某生产企业于2000年1月1日向某保险公司投保企业财产保险,保险期限
以下关于CPU的叙述中,正确的是()。A.CPU中的运算单元、控制单元和寄存
脑血管疾病最严重的危险因素是:A.高血脂 B.高血压 C.高盐饮食 D.吸
患者,女,40岁,因支气管哮喘发作急诊入院。经静脉输入药物治疗1天后患者症状有所
下列关于担保物权的表述中,正确的有()。A.担保物权是主权利 B.担保物权具
最新回复
(
0
)