河北工业大学-C++实验报告实验四_第1页
河北工业大学-C++实验报告实验四_第2页
河北工业大学-C++实验报告实验四_第3页
河北工业大学-C++实验报告实验四_第4页
河北工业大学-C++实验报告实验四_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、编写一个程序,要求:(1)生明一个类Complex (复数类),定义类Complex的两个对象cl和c2.对象cl通过构造函数直接指定复数的实部和虚部(类私有数据成员为double类型:real和imag)为2.5及3.7,对象c2通过构造函数直接指定复数的实部和虚 部为 4.2及6.5;(2) 定义友元运算符重载函数,它以c1、c2对象为参数,调用该函数时能 返回两个复数对象相加操作;(3) 定义成员函数print,调用该函数时,以格式“ real+imag i”输出当前对象的实部和虚部,例如:对象的实部和虚部分别是4.2和6.5,则调用print函数输出格式为: 4.2+6.5 i;(

2、4)编写主程序,计算出复数对象c1和c2相加结果,并将其结果输出。#includeusing namespace std;class Complexpublic:Complex(double r=0.0,double i=0.0);friend Complex operator+ (Complex& a,Complex& b);void printf();private:double real;double imag;Complex:Complex(double r,double i)real=r;imag=i;Complex operator+ (Complex& a,Complex& b)

3、Complex temp;temp.real=a.real+b.real;temp.imag=a.imag+b.imag;return temp;void Complex:printf()cout0)cout+;if(imag!=O)coutimagie ndl;void mai n()Complex c1(2.5,3.7),c2(4.2,6.5),c3;c3=c1+c2;c3.pri ntf();* CAUSESAH Pvc5ada d a5Debugsc.7+10.21fgss 孔ny k&y to cantinue2、编写一个程序,其中设计一个时间类Time,用来保存时、分、秒等私有数据

4、成员,通过重载操作符“ +”实现两个时间的相加。要求将小时范围限制在 大于等于0,分钟范围限制在059分,秒钟范围限制在059秒。提示:时间类Time的参考框架如下:class Timepublic:Time(int h=0,int m=0,int s=0);构造函数Time operato叶(Time &);/运算符重载函数,实现两个时间的相加void disptime();/显示时间函数private:int hours, minu tes,sec on ds;#in cludeusing n amespace std;class Timepublic:Time(int h=0,int m

5、=0,int s=0);/ 构造函数Time operator+(Time &);/运算符重载函数,实现两个时间的相加void disptime();/显示时间函数private:int hours;int minutes;int seconds;Time:Time(int h,int m,int s)hours=h;minutes=m;seconds=s;Time Time:operator+(Time& t)int h,m,s; s=(t.seconds+seconds)%60; m=(minutes+t.minutes+(t.seconds+seconds)/60)%60;h=hours

6、+t.hours+(minutes+t.minutes+(t.seconds+seconds)/60)/60; hours=h;minutes=m;seconds=s;return *this;void Time:disptime() couthours:minutes:seconds.endl;void Input(int &h,int &m,int &s)couth ;cinm ;cins ; while(m59|s59)cout* 时间输入错误!请重新输 !*n; couth ;cinm ;cins ;int main()int h1,m1,s1,h2,m2,s2;Input(h1,m1

7、,s1);Input(h2,m2,s2);Time A(h1,m1,s1),B(h2,m2,s2);A=A+B;A.disptime();return 0;3、用友元运算符函数或成员运算符函数,重载运算符“+ ”、“-”、“*”,实现对实验二中实现的矩阵类的对象的加、减、乘法。#in clude#defi ne hang 2#defi ne lie2class Matrixprivate:int Row;int Colu mn;int MATRIXha nglie;public:Matrix(i nt r,int c)Row=r;Colu mn=c;Matrix() void TypeMatr

8、ix();void Prin t() con st;Matrix & operator = (const Matrix & rhs);Matrix operator + (const Matrix & rhs);Matrix operator - (const Matrix& rhs);void Matrix:TypeMatrix()std:cout请输入矩阵:std:endl; for(i nt i=0;iha ng;i+)for(int j=0;jMA TRIXij;void Matrix:Print() conststd:cout 矩阵的结果为 :std:endl;for(int q=0

9、;qhang;q+)for(int s=0;slie;s+)std:coutMATRIXqst; if(s=lie-1) std:coutstd:endl;Matrix& Matrix:operator = (const Matrix& rhs) if(this!=&rhs)for(int g=0;ghang;g+) for(int h=0;hMATRIXgh=rhs.MATRIXgh; return *this;Matrix Matrix:operator + (const Matrix& rhs)int i,j;for(i=0;ihang;i+)for(j=0;jMATRIXij+rhs.

10、MA TRIXij;return *this ;Matrix Matrix:operator - (const Matrix& rhs)int i,j;for(i=0;ihang;i+)for(j=0;jMATRIXij-rhs.MATRIXij;return *this ;int main()Matrix a,b,c,d;a. TypeMatrix();b. TypeMatrix();c=a+b;c. Print();d=a-b;d. Print(); *C:U 5ERSHPVvs 占 tiasdasA De budaj请输人矩齡132备输入矩阵,213姑阵的结臬为=34話阵的结金为二1 3

11、2 3PphssanyIce5/ to continue4、编写一个程序,用于进行集合的和、并和交运算。例如输入整数集合9,5,4, 3,6,7和2,4,6,9,计算出他们进行集合的并、差和交运算后的结果。【提示】(1) 可以用一下表达式实现整数集合的基本运算:S1+S2两个整数集合的并运算S1-S2两个整数集合的差运算s1*s2两个整数集合的交运算(2) 参考以下Set类的框架,用于完成集合基本运算所需的各项功能。class Setpublic:Set();void input(int d);向集合中添加一个元素int len gth();返回集合中的元素个数int getd(int i);

12、返回集合中位置i的元素void display。;/显示集合的所有元素Set operato叶(Set s1);成员运算符重载函数,实现集合的并运算Set operator-(Set s1);成员运算符重载函数,实现集合的差运算Set operator*(Set s1);倣员运算符重载函数,实现集合的交运算Set operator=(Set si);成员运算符重载函数,实现集合的赋值运算 protected:int len;统计结合中元素的个数;int sMAX;/ 存放集合中的元素;#includeusing namespace std;const int MAX = 50;class se

13、tpublic:set();void input(int d); int length(); int getd(int i);voiddisp();setoperator+(set s1);setoperator-(set s1);setoperator*(set s1);setoperator=(set s1);protected:int len;int sMAX;set:set()len = 0;/s =0;cout * 建立一个集合 *n;void set:input(int d)len = d;cout 输入集合元素 d 个: for(int i = 0; i si ;int set:

14、length()int n=0;while(sn != 0)n+;return n;int set:getd(int i)return 0;void set:disp()for (int i = 0; i len; i+)cout si ;/cout endl;set set:operator+(set s1) / 并运算 /strcat(s,s1.s);for (int i = 0; i len; i+)for(int j = 0; j s1.len; j+) / 在 s1.s 中选出不相同的if(si = s1.sj)选出相同的元素删掉得到sl.s与s不同的元素for (;j s1.len

15、; j+)s1.sj = s1.sj+1;-s1.len;for (int j = 0;j sl.len; j+ )/ 将 s1.s中不相同的加在 s后面slen = s1.sj;len+;slen+s1.len = 0;return *this;set set:operator-(set s1)/ 差运算 int t;for (int i = 0; i s1.len; i+)for(int j = 0; j len; j+)if(s1.si = sj )/选出s与sl.s中相同的元素并且删除掉t = j;for (;t len; t+)st = st+1;-len; return *this

16、;set set:operator*(set s1)/ 交运算 int mMAX;int l = 0;for (int i = 0; i s1.len; i+)for(int j = 0; j len; j+)/ 选出相同的元素if(s1.si = sj)ml = sj;l+;for (i = 0; i l; i+)si = mi;sl = 0;len = l;return *this;set set:operator=(set s1)for (int i = 0; i s1.length(); i+)si = s1.si;len = s1.len;return *this;int main(

17、)int n;set C;set A;cout n;A. input(n);set B;cout n;B. input(n);cout endl;cout 两集合的差集(A - B )为:”;C = A - B;C. disp();cout endl;/*cout 两集合的交集(A * B )为:;C = A * B;C.disp();cout endl;*/*cout 两集合的并集(A + B )为:;C = A + B;C.disp();cout endl;*/return 0; 说明分别分开运行6、写一个程序,定义抽象类 Container: class Containerprotect

18、ed:public:double radius;Container(double r);抽象类 Container的构造函数virtual double surface_area()=O;/纯虚函数 surface_areavirtual double volume()=0;纯虚函数 volume;【要求】建立3个继承 Con tai ner的派生类:Sphere (球体)、Cyli nder (圆柱体)、Cube(正方体),让每一个派生类都包含虚函数 surface_area(和 volume(),分别用来 球体、圆柱体和正方体的表面积和体积。要求写出主程序,应用C+的多态性,分别计算边长为

19、 6.0 的正方体、半径为 5.0 的球体,以及半径为 5.0 和高为 6.0 的圆柱体的表面积和体积。#include#includeusing namespace std;class containerprotected:double radius;public:container(double radius1);virtual double surface_area()=0;virtual double volume()=0;container:container(double radius1)radius=radius1;派生类 cube、sphere与 cylinderclass c

20、ube : public containerpublic:cube(double radius1):container( radius1 ) virtual double surface_area();virtual double volume();double cube : surface_area()return 6*radius*radius;double cube : volume()return radius*radius*radius;class sphere : public containerpublic:sphere(double radius1):container( radius1 )virtual double surface_area();virtual double volume();double sphere : surface_area()return 4*3.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论