河北工业大学C++实验报告实验四Word文件下载.docx
- 文档编号:19235955
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:18
- 大小:47.13KB
河北工业大学C++实验报告实验四Word文件下载.docx
《河北工业大学C++实验报告实验四Word文件下载.docx》由会员分享,可在线阅读,更多相关《河北工业大学C++实验报告实验四Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
if(imag>
0)
cout<
"
+"
;
if(imag!
=0)
imag<
'
i'
endl;
voidmain()
Complexc1(2.5,3.7),c2(4.2,6.5),c3;
c3=c1+c2;
c3.printf();
2、编写一个程序,其中设计一个时间类Time,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。
要求将小时范围限制在大于等于0,分钟范围限制在0~59分,秒钟范围限制在0~59秒。
提示:
时间类Time的参考框架如下:
classTime
Time(inth=0,intm=0,ints=0);
//构造函数
Timeoperator+(Time&
);
//运算符重载函数,实现两个时间的相加
voiddisptime();
//显示时间函数
inthours,minutes,seconds;
public:
private:
inthours;
intminutes;
intseconds;
Time:
Time(inth,intm,ints)
hours=h;
minutes=m;
seconds=s;
TimeTime:
operator+(Time&
t)
inth,m,s;
s=(t.seconds+seconds)%60;
m=(minutes+t.minutes+(t.seconds+seconds)/60)%60;
h=hours+t.hours+(minutes+t.minutes+(t.seconds+seconds)/60)/60;
return*this;
voidTime:
disptime()
hours<
minutes<
seconds<
."
voidInput(int&
h,int&
m,int&
s)
输入时间:
cin>
>
h;
m;
s;
while(m<
0||m>
59||s<
0||s>
59)
{
******时间输入错误!
请重新输!
******\n"
输入时间:
"
}
intmain()
inth1,m1,s1,h2,m2,s2;
Input(h1,m1,s1);
Input(h2,m2,s2);
TimeA(h1,m1,s1),B(h2,m2,s2);
A=A+B;
A.disptime();
return0;
3、用友元运算符函数或成员运算符函数,重载运算符“+”、“-”、“*”,实现对实验二中实现的矩阵类的对象的加、减、乘法。
#definehang2
#definelie2
classMatrix
intRow;
intColumn;
intMATRIX[hang][lie];
Matrix(intr,intc)
Row=r;
Column=c;
Matrix(){}
voidTypeMatrix();
voidPrint()const;
Matrix&
operator=(constMatrix&
rhs);
Matrixoperator+(constMatrix&
Matrixoperator-(constMatrix&
voidMatrix:
TypeMatrix()
std:
cout<
请输入矩阵:
std:
for(inti=0;
i<
hang;
i++)
for(intj=0;
j<
lie;
j++)
{
std:
cin>
MATRIX[i][j];
}
Print()const
矩阵的结果为:
for(intq=0;
q<
q++)
for(ints=0;
s<
s++)
MATRIX[q][s]<
\t"
if(s==lie-1)
{
std:
}
Matrix&
Matrix:
operator=(constMatrix&
rhs)
if(this!
=&
rhs)
for(intg=0;
g<
g++)
for(inth=0;
h<
h++)
{
this->
MATRIX[g][h]=rhs.MATRIX[g][h];
}
MatrixMatrix:
operator+(constMatrix&
inti,j;
for(i=0;
for(j=0;
MATRIX[i][j]=this->
MATRIX[i][j]+rhs.MATRIX[i][j];
return*this;
operator-(constMatrix&
MATRIX[i][j]-rhs.MATRIX[i][j];
Matrixa,b,c,d;
a.TypeMatrix();
b.TypeMatrix();
c=a+b;
c.Print();
d=a-b;
d.Print();
4、编写一个程序,用于进行集合的和、并和交运算。
例如输入整数集合{9,5,4,3,6,7}和{2,4,6,9},计算出他们进行集合的并、差和交运算后的结果。
【提示】
(1)可以用一下表达式实现整数集合的基本运算:
s1+s2两个整数集合的并运算
s1-s2两个整数集合的差运算
s1*s2两个整数集合的交运算
(2)参考以下Set类的框架,用于完成集合基本运算所需的各项功能。
classSet
Set();
voidinput(intd);
//向集合中添加一个元素
intlength();
//返回集合中的元素个数
intgetd(inti);
//返回集合中位置i的元素
voiddisplay();
//显示集合的所有元素
Setoperator+(Sets1);
//成员运算符重载函数,实现集合的并运算
Setoperator-(Sets1);
//成员运算符重载函数,实现集合的差运算
Setoperator*(Sets1);
//成员运算符重载函数,实现集合的交运算
Setoperator=(Sets1);
//成员运算符重载函数,实现集合的赋值运算
protected:
intlen;
//统计结合中元素的个数;
ints[MAX];
//存放集合中的元素
constintMAX=50;
classset
set();
voiddisp();
setoperator+(sets1);
setoperator-(sets1);
setoperator*(sets1);
setoperator=(sets1);
set:
set()
len=0;
//s={0};
cout<
***建立一个集合***\n"
voidset:
input(intd)
len=d;
输入集合元素"
<
d<
个:
for(inti=0;
i<
d;
i++)
cin>
s[i];
intset:
length()
intn=0;
while(s[n]!
='
\0'
)
n++;
returnn;
getd(inti)
disp()
for(inti=0;
len;
i++)
cout<
s[i]<
//cout<
endl;
setset:
operator+(sets1)//------------------------并运算----------------
//strcat(s,s1.s);
for(intj=0;
j<
s1.len;
j++)//在s1.s[]中选出不相同的
if(s[i]==s1.s[j])//选出相同的元素删掉得到s1.s与s不同的元素
for(;
j<
j++)
s1.s[j]=s1.s[j+1];
--s1.len;
for(intj=0;
j++)//将s1.s[]中不相同的加在s[]后面
s[len]=s1.s[j];
len++;
s[len+s1.len]='
operator-(sets1)//------------------------差运算------------------
intt;
if(s1.s[i]==s[j])//选出s与s1.s中相同的元素并且删除掉
t=j;
t<
t++)
s[t]=s[t+1];
--len;
operator*(sets1)//-------------------交运算----------------------
intm[MAX];
intl=0;
j++)//选出相同的元素
if(s1.s[i]==s[j])
m[l]=s[j];
l++;
for(i=0;
l;
s[i]=m[i];
s[l]='
len=l;
operator=(sets1)
s1.length();
s[i]=s1.s[i];
len=s1.len;
intn;
setC;
setA;
建立含有几个元素的集合:
cin>
n;
A.input(n);
setB;
B.input(n);
两集合的差集(A-B)为:
C=A-B;
C.disp();
/*
两集合的交集(A*B)为:
C=A*B;
*/
/*
两集合的并集(A+B)为:
C=A+B;
……………………说明分别分开运行……………………
6、写一个程序,定义抽象类Container:
classContainer
doubleradius;
Container(doubler);
//抽象类Container的构造函数
virtualdoublesurface_area()=0;
//纯虚函数surface_area
virtualdoublevolume()=0;
//纯虚函数volume
【要求】
建立3个继承Container的派生类:
Sphere(球体)、Cylinder(圆柱体)、Cube(正方体),让每一个派生类都包含虚函数surface_area()和volume(),分别用来球体、圆柱体和正方体的表面积和体积。
要求写出主程序,应用C++的多态性,分别计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。
string>
classcontainer
container(doubleradius1);
container:
container(doubleradius1)
radius=radius1;
//派生类cube、sphere与cylinder
classcube:
publiccontainer
cube(doubleradius1):
container(radius1){}
virtualdoublesurface_area();
virtualdoublevolume();
doublecube:
surface_area()
return6*radius*radius;
volume()
returnradius*radius*radius;
classsphere:
sphere(doubleradius1):
container(radius1)
{}
};
doublesphere:
return4*3.14*radius*radius;
return4.0/3.0*3.14*radius*radius*radius;
classcylinder:
doublehigh;
cylinder(doublehigh1,doubleradius1):
container(radius1)
{high=high1;
doublecylinder:
return2*3.14*radius*radius+2*3.14*high*radius;
return3.14*radius*radius*high;
container*p;
cubecc(6.0);
spheress(5.0);
cylindercy(6.0,5.0);
p=&
cc;
正方体的表面积:
p->
surface_area()<
正方体的体积:
volume()<
ss;
球体的表面积:
球体的体积:
cy;
圆柱体的表面积:
圆柱体的体积:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 河北 工业大学 C+ 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)