2023年河北工业大学-C++实验报告实验四.docx

上传人:太** 文档编号:72740045 上传时间:2023-02-13 格式:DOCX 页数:16 大小:62.44KB
返回 下载 相关 举报
2023年河北工业大学-C++实验报告实验四.docx_第1页
第1页 / 共16页
2023年河北工业大学-C++实验报告实验四.docx_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《2023年河北工业大学-C++实验报告实验四.docx》由会员分享,可在线阅读,更多相关《2023年河北工业大学-C++实验报告实验四.docx(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

2、. 5 i;(4)编写主程序,计算出复数对象cl和c2相加结果,并将其结果输出。#i n cludeusing namespace s t d;cl a s s Comp 1 ex (p u blic:C o mplex (do u ble r =0.0, double i= 0 .0);friend Complex ope rat or+ (Complex& a,Comp 1 ex& b); void prin t f ();pr i v a t e:。 double real; d oub 1 e imag;);Comp 1 ex:Complex (double r, d oub 1 e

3、i ) a r eal=r;C:USERSHPvcsadasdasDebugsada!请输入矩阵:1323请输入矩阵:2133阵的结果为:3457矩阵的结果为:1 32 3Press any key to cont inue4、编写一个程序,用于进行集合的和、并和交运算。例如输入整数集合 9,5,4, 3, 6,7和2,4,6, 9 ),计算出他们进行集合的并、差和交运算后的 结果。【提醒】(1)可以用一下表达式实现整数集合的基本运算:sl+s2两个整数集合的并运算sl-s2两个整数集合的差运算sl*s2两个整数集合的交运算(2)参考以下Set类的框架,用于完毕集合基本运算所需的各项功能。cl

4、as s S e tp u b 1 ic:Set();v oi d inpu t ( i n t d): / /向集合中添加一个元素in t leng t h (); 返回集合中的元素个数in t gc t d(int i ); / /返回集合中位置i的元素v oid di s play。;/显示集合的所有元素Set ope r a t or+ (Set s 1);/成员运算符重载函数,实现集合的并运算Set o p erat o r-(Se t s 1);/成员运算符重载函数,实现集合的差运 算Se t o p e r a t or*(Set s 1) ;/成员运算符重载函数,实现集合的 交

5、运算Set o perator=(S e t s 1 ); / /成员运算符重载函数,实现集合的赋 值运算p rot e cl e d:in t len;/记录结合中元素的个数; int s MAX;/存放集合中的元素;#inc 1 ud e us i ng nam e space std;con s t i n t MAX = 5 0 ;class s et pub lie:set();vo id input (i n t d);i n t le n gth();i n t getd(int i);v o id di s p ();set o per at o r + (set si);se

6、t operator-( s et s 1 );os e t ope r at o r *(s e t si);o per a t o r =(set si);pro t ectcd:int 1 e n;int sMAX;);s e t:se t ()len = 0 ;o/s =0;cout *建立一个集合*n”;)void set: :in p ut (i n t d)alen = d;cou t 输入集合元素vvd 个:;for ( i nt i = 0; i si;)int set: : le n gi h ()(i n t n=0;wh i 1 e(s n ! = 0 r)(*n+;

7、re t unii n t set:ge t d ( i nt i)r e t u rn 0;)void s e t:di s p()(afor (int i = 0 ; i len; i+) cou t s ij /cout e ndl;)set set: o perat o r+(set s 1)set set: o perat o r+(set s 1)/ -并运算- “/s t rcat( s ,sl.s);for (in t i = 0; ifor (in t i = 0; i 1 e n; i+)H-o r(intj = 0;j s 1. Ie n;j+) 在 s l.s中选出不相

8、同的/选出相同的元素删抻得到si. s与s不同的元素for (;j s 1. 1 en : j + +) g osl.sj = sl.s j+1 ;*_ s 1 .1 e n;00fo r (in t j = 0;jsl.len; j +) 将 si. s中不相同的加在 s 口 后面a sl e n = si. sj ;len+: s len+ s 1. 1 enl = 0f ;re t u r n * t h i s ;)差运算-一se t set:o p erat o r-( s e t s 1)/-一一(。i nt t;for (int i = 0 ; i s 1 .le n ;i+)w

9、 fo r (int j = 0; j 1 e n ; j+)(。oif(s 1 .si = sj)/选出s与s 1 .s中相同的元素并且删除掉(= j ;。f or(; l 1 e n ; i+)。st = s t+1:s- 1 en; I00 set s e t:: ope r at o r*(s e t si)/-一交运算-一一(4 n t mMAX;1 n t 1 = 0 ;fo r (int i = 0 ; i sl.le n ; i+), f o r(int j = 0; j len; j+)/ / 选出相同的元素(。 if(sl.si = sjj)g (m 1J= s j;g 1

10、+; 00afo r ( i = 0; i 1 ; i +)。 si = mi;s 1 = O;1 en = 1 ;0return *t h is;set se t : o pera t o r =( s e t s 1)。f or ( i n t i = 0; i n;A.inp u t( n ); 0set B;-cou t 建立具有几个元素的集合:;cin n;B.inp u t( n ); 。c o ut endl;cout 两集合的差集(A - B)为:;C = A - B:C.di s p ();co u t e nd 1 ;C out 两集合的交集(A * B)为:;aC = A

11、 * B ;C. d i s P ();co u t endl:*/*cout Vv”两集合的并集(A + B)为:;C = A + B;C. d isp();c o u t endl;*/return 0;说明分别分开运营6、写一个程序,定义抽象类C o n t aincr:class Con t ainerprot e c t ed:d o u b le radius;public:C o nlaine r (do u ble r);抽象类 Con t a iner 的构造函数vi r t u al d o u ble surface_area()=0: / /纯虚函数 surf a ce

12、_areavi r tualdoub le v olume()=0; / /纯虚函数 vo 1 u m e【规定】 建立3个继承Conta i ner的派生类:Sphere (球体)、Cylin d er(圆柱体)、C u be (正方体),让每一个派生类都包含虚函数s u r face_area()和volume。,分 别用来球体、圆柱体和正方体的表面积和体积。规定写出主程序,应用C+的多 态性,分别计算边长为6.0的正方体、半径为5. 0的球体,以及半径为5.0和高为 6.0的圆柱体的表面积和体积。# inc 1 ude#includeusing n ame s pac e st d ;c

13、 la s s c o ntai n erp r ote c ted:d o ub 1 e rad i us;pub i c:conta i ner(double radius 1 );v i rtual d oubl e s urfa c e_ a r ea()=0;virtu a 1 d oub 1 e v o 1 ume( )=0;c ont a in e r :: c o n tai n e r (do u b le r a dius 1)r a dius= r a d i u si;)/ /派生类 c u be、sphe r e 与 c y li n derc lass c u be

14、 : publ i c c ontai n erpu b lie: cube( d ouble radius 1) :co n tainer( r ad i us 1 ) vi r t u a 1 double s u rf a ce_area();virt u aldou ble vo 1 um e ();;d o u b 1 e c ub e : s ur f a c e_ a rea()(r eturn 6* r adiu s * r adiu s ;double cu b e : v o lume()ret u rn r adi u s *radius*rad i u s;Iclass

15、 sphe r e : p u b 1 i c containerpublic:s p h e re (d o ub 1 e radius 1 ): c o n t ainer( r adiusl )virtua 1 d o uble s u r facc_arca();v i rtua 1 doubl e v olum e ();dou b Ie spher e : surface_area ()aima g =1;1 e x & b)1 e x & b)Complex op e ra t o r + (Comp 1 ex& a ,C o(Complex t em p ;t e mp. r

16、eal=a.real+b.r e a 1 ;otcmp. imag=a.im a g+b.imag;are t u i n tern p ;void Com p lex:p r in t f()(cout 0 )C O Ut1+;if(ima g ! =0)0co utima g icn d 1;)void m a i n ()(0com p lex c 1 (2.5,3. 7 ),c2(4.2,6.5) ,c 3 ;o c 3 =cl+c2;c3. pr i n tf():) C:USERSHPvcsadasdasDebugsiS.7+10.2iPress any key to contin

17、uer cturn 4*3.14 * r a d ius*r a d ius;double s p h e re : : vo 1 u m e ()(return 4. 0/3.0* 3 .1 4 *ra d i us * ra d iu s * radius;)c la s s cylind e r : p u blic cont a in e r(p ro t ected:doubl e high;p u blic:cy 1 in d e r ( d oub 1 e high 1, d ouble radius 1): con t a i n e r (radius 1) high=hig

18、hl;virt u al d ou b 1 e s urfac e _ a rea();v irtual d o uble v o lume(););double c yli n dcr : : s u rfac e _ a r e a()r e t u rn 2* 3.14* radiu s *radi u s+ 2 *3. 1 4* h igh*r a d i us;do u ble cyli n de r : : v olume() r e t u r n 3.1 4 *radius*radi us* high;)in t main()con tainer *p;cube cc(6.0)

19、;s phe r e s s (5. 0);cy 1 in d er cy( 6 . 0,5. 0);p=& c c;cout正方体的表面积: s u r face_ a rea() e ndl;cou t 正方体的体积:V v olume()end I ;p=&s s ;c o u t v球体的表面积:vsur f ace_area () e nd 1 ;c ouivv”球体的体积:vp-v o lum e ()endl;P=&cy;cout s u r f a ce_area()endl;c o ut 圆柱体的体积:Vv p -vokime() e nd 1 ;r e turn 0;2、编

20、写一个程序,其中设计一个时间类Time,用来保存时、分、秒等私有 数据成员,通过重载操作符 + ”实现两个时间的相加。规定将小时范围限制在 大于等于0,分钟范围限制在059分,秒钟范围限制在05 9秒。提醒:时间类Time的参考框架如下:c lass T ime(p ubl i c:T i me ( i n t h= 0 , in t m=0, i n t s =0); / 构造函数Time opc r ator+(T i m e &); /运算符重载函数,实现两个时间 的相加vo i d d isptime(); 显示时间函数p rivate:int hours,min u te s , s

21、 econ d s ;):#i n cludeusi n g n a m e spa c c std;c 1 a ss Time(p ubl i c:T ime(int h= 0 ,int m= 0 , i n t s =0); / / 构造函数Time operator+(T ime &);/运算符重载函数,实现两个时间的相加void di s ptim e ();显示时间函数privat e :“ n t hour s ;i n t minut e s;int s eco n d s;;Time:: T ime(int hj n t m,int s)(h o urs=h;orn i nut

22、 e s=m;s econds=s;ITimeT i me:operator+ (Time& t )(i n t h,m, s;s= (t. $ cco n ds+s e c o n d s)%60;am=(mi n u tes+t.mi n u te s + (t.seconds+se c onds)/60)%6 0 ;h = hou r s+ t .h o urs+(m i n utes+t.min u t es+(t.s e conds+sec o nds) / 6 0)/60;4iours=h;minutes=m;sc c o n ds=s;r e t urn *this;void T

23、 im e ::di s p ti m e ()(ocouthoursH: m i n u t e s*: secon d s ,.,end 1 ;)void I nput( i nt &h, i n t &m, i n t &s)(soutVV”输入时间:; ci n haci n m c i ns ;o while (m5 9| | s 5 9 )cou t s;)|int m a in()(in t h I ,m I, s I ,h 2 , m 2 , s2;In p u t(h 1 , ml, s 1);n put (h2, m 2 , s 2 );oTimeA (hl,m 1 ,sl

24、),B (h2,m2, s 2 );A=A+B ;A.disp t im e ();re t urn 0 ;) .C:USERSHPvcsadasdasDebuc输入时间2332输入时间:71243 B:36:15.Press any key to continue3、用友元运算符函数或成员运算符函数,重载运算符“ +*,实*,实现对实验二中实现的矩阵类的对象的加、减、乘法。# i ncl u ded e f in e h a n g 2# d e fine 1 ie 2c 1 a s s Ma t r ix(priv a te: i nt Row;int Column;i n t MATRI

25、Xhang lie;publi c :Ma t rix (i n t r i nt c)Row=r;8coi u mn=c;)sM a trix() v o id T yp e Ma t r ix();avoid Pri n t () const;,Ma t rix& ope r a(or = (co n s t Matrix& rhs);aMatrix o p erator + (c o ns t M a t r ix& rhs);Matrix operat o r (const M a trix& rhs);void Matrix:TypeM a tr i x ()s t d:couiv请

26、输入矩阵:vvs t d:: e n d 1 ;fbr(int i= 0 ;ih a ng;i+)for ( i ntj=O;j 1 ie;j +)std: : cinMATR I Xi j;v oid Ma t r i x: :Pr i n t () c on s t(st d:: cout 矩阵的结果为:s t d:: end 1 ;of o r (int q= 0 ; q hang; q+ )(for( i nt s =0;s 1 ic; s+)std : coutMATRlXq s M t H;i f(s=lie-l)6st d :: cout s t d:: end 1 ;Mat r

27、 ix& Mair i x:op e r a to r = (con s t Mat r i x & rhs)if( t hi s !=&rhs)。(fo r ( i nt g=0: ghan g ; g+)8,。 fo r (i n t h =0;hMATR I X gh=rhs. M ATR I X g h;8)0 O retu r n *thi s ;M a tr i x Ma t rix:o p crato r + (const Ma t rix& rhs) i nt i, j ;for(i=0; i h a ng; i+)gfor(j=0:jMATRIX i j +rhs.M ATRIX i j;6)0 return * t his ;Matrix Mat r i x :operator (const Mal r ix& r h s )ini i, j ;gfor( i =0;ih a ng; i+)。 f o r (j=O;jMAT RIXij -rh s .MATRIXi|j;00 Jo r etu r n * t his ;i n t main ()(Matrix a , b,c,d;a.T y peMatrix();b . T y p e M a t rix();c =a+ b ;3 c .Print();d=ab;d ,P r in t ();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁