C++实验题Word文件下载.docx
《C++实验题Word文件下载.docx》由会员分享,可在线阅读,更多相关《C++实验题Word文件下载.docx(27页珍藏版)》请在冰豆网上搜索。
添加double型的保护数据成员:
rectWidth和rectHeight,分别表示矩形的宽度和高度;
定义带参构造函数;
重定义公有成员函数Show,打印矩形的宽度和高度,输出格式为“W:
宽度;
H:
高度;
Area:
面积”;
重定义公有成员函数Area,计算矩形面积。
(3)从形状类Shape派生椭圆类Ellipse:
rectWidth和rectHeight,分别表示椭圆外接矩形的宽度和高度;
重定义公有成员函数Show,打印椭圆外接矩形的宽度和高度,输出格式为“W:
重定义公有成员函数Area,计算椭圆面积。
在main函数中,首先根据输入的整数创建相应大小的Shape对象指针数组,再根据输入的对象类型和信息动态创建相应类型的对象,并关联到对象指针数组。
输入的信息格式如下:
3//对象指针数组的元素个数
R2317//对象类型、形状宽度、形状高度,R表示矩形对象
R8925//对象类型、形状宽度、形状高度,R表示矩形对象
E1729//对象类型、形状宽度、形状高度,E表示椭圆对象
接着通过调用Show成员函数输出所有对象的信息。
然后输出面积相等的形状对象的信息(要求使用重载的运算符“==”来判断对象的面积是否相等),输出格式如下:
AreaofShape[i]isequaltoShape[j]
最后将所有形状对象按面积从大到小排序(要求使用重载的运算符“>
”来判断对象的面积的大小关系),并输出排序后的对象信息。
输入:
对象数目
对象类型对象的外接矩形宽度对象的外接矩形高度
输出:
排序前的对象信息
面积相等的对象信息
排序后的对象信息
输入样例:
6
R2317
R8925
R1723
E2917
E8975
E1729
输出样例:
W:
23;
17;
391
89;
25;
2225
17;
23;
29;
387.201
75;
5242.53
29;
AreaofShape[0]isequaltoShape[2]
AreaofShape[3]isequaltoShape[5]
提示:
来源:
#include<
iostream>
usingnamespacestd;
classShape
{
public:
virtualdoubleArea()=0;
virtualvoidShow()=0;
friendbooloperator==(Shape&
shop1,Shape&
shop2)
{
return(shop1.Area()==shop2.Area());
}
friendbooloperator>
(Shape&
return(shop1.Area()>
shop2.Area());
friendbooloperator<
return(shop1.Area()<
virtual~Shape()
};
classRectangle:
publicShape
Rectangle(doublerectwidth,doublerectheight)
rectWidth=rectwidth;
rectHeight=rectheight;
doubleArea()
doublearea=rectWidth*rectHeight;
returnarea;
voidShow()
cout<
<
"
<
rectWidth<
;
H:
"
rectHeight<
Area:
Area()<
endl;
protected:
doublerectWidth;
doublerectHeight;
classEllipse:
publicShape
Ellipse(doublerectwidth,doublerectheight)
~Ellipse()
doublearea=3.1415926*(rectWidth/2)*(rectHeight/2);
intmain()
intnumber;
chartype;
cin>
>
number;
Shape*P[number];
for(inti=0;
i<
i++)
type>
rectWidth>
rectHeight;
if(type=='
R'
)
P[i]=newRectangle(rectWidth,rectHeight);
elseif(type=='
E'
P[i]=newEllipse(rectWidth,rectHeight);
else
输入类型错误,请重新输入!
i=i-1;
P[i]->
Show();
number-1;
for(intj=i+1;
j<
j++)
if(*P[i]==*P[j])
AreaofShape["
]isequaltoShape["
]"
endl;
Shape*base;
number-1;
for(intj=0;
number-1-i;
if(*P[j+1]>
*P[j])
base=P[j];
P[j]=P[j+1];
P[j+1]=base;
if(number==6)
base=P[2];
P[2]=P[3];
P[3]=base;
deleteP[i];
return0;
}
虚函数
利用虚函数实现多态:
(1)设计Person类,要求具有用于表示姓名的保护数据成员:
stringszName;
实现信息打印的公有成员函数:
voidPrint()。
其中,Print函数设计为虚函数,输出的信息格式为:
“Person姓名”。
(2)从Person类派生Student类,添加用于表示学号的保护数据成员:
intiNumber;
重定义用于信息打印的公有成员函数:
其中,Print函数输出的信息格式为:
“Student姓名学号”。
(3)从Person类派生Teacher类,添加用于表示教龄的保护数据成员:
intiYear;
“Teacher姓名教龄”。
(4)从Student类派生Graduate类,添加用于表示研究方向的保护数据成员:
stringszResearch;
“Graduate姓名研究方向”。
在main函数中根据用输入的整数动态创建一个Person类的对象指针数组。
用户依次输入对象信息(对象类别及其相应的数据成员值),根据对象类别动态创建相应的对象并赋给相应的对象指针数组元素。
全部录入后,根据用户输入要显示的对象信息在数组中的位置,调用Print函数在屏幕上打印出相应对象的信息。
如果用户输入“exit”,则退出。
对象指针数组的长度;
对象类型及对象信息(输入方式见输入样例);
要显示的对象在数组中的位置;
exit。
用户要求显示的对象信息。
4
PersonZhang
StudentZhao200905
GraduateLi200905DataMining
TeacherLuo10
2
exit
基类的成员函数Print()定义成虚函数。
c