2023年河北工業(yè)大學-C++實驗報告實驗四_第1頁
2023年河北工業(yè)大學-C++實驗報告實驗四_第2頁
2023年河北工業(yè)大學-C++實驗報告實驗四_第3頁
2023年河北工業(yè)大學-C++實驗報告實驗四_第4頁
2023年河北工業(yè)大學-C++實驗報告實驗四_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、編寫一個程序,規(guī)定:(I)生明一個類Complex(復數(shù)類),定義類Comp1ex的兩個對象c1和c2,對象cl通過構(gòu)造函數(shù)直接指定復數(shù)的實部和虛部(類私有數(shù)據(jù)成員為double類型:real和imag)為2.5及3.7,對象c2通過構(gòu)造函數(shù)直接指定復數(shù)的實部和虛部為4.2及6.5;(2)定義友元運算符重載函數(shù),它以cl、c2對象為參數(shù),調(diào)用該函數(shù)時能返回兩個復數(shù)對象相加操作;(3)定義成員函數(shù)print,調(diào)用該函數(shù)時,以格式“real+imagi”輸出當前對象的實部和虛部,例如:對象的實部和虛部分別是4.2和6.5,則調(diào)用print函數(shù)輸出格式為:4.2+6.5i;(4)編寫主程序,計算出復數(shù)對象cl和c2相加結(jié)果,并將其結(jié)果輸出。#include<iostream>usingnamespacestd;classComp1ex(public:Complex(doubler=0.0,doublei=0.0);friendComplexoperator+(Complex&a,Comp1ex&b);voidprintf();private:。doublereal;§doub1eimag;);Comp1ex::Complex(doubler,doub1ei)areal=r;'C:\USERS\HP\vc\sadasdas\Debug\sada!請輸入矩陣:1323請輸入矩陣:2133陣的結(jié)果為:TOC\o"1-5"\h\z3457矩陣的結(jié)果為:33Pressanykeytocontinue4、編寫一個程序,用于進行集合的和、并和交運算。例如輸入整數(shù)集合{9,5,4,3,6,7}和{2,4,6,9),計算出他們進行集合的并、差和交運算后的結(jié)果?!咎嵝选?1)可以用一下表達式實現(xiàn)整數(shù)集合的基本運算:sl+s2兩個整數(shù)集合的并運算sl-s2兩個整數(shù)集合的差運算sl*s2兩個整數(shù)集合的交運算(2)參考以下Set類的框架,用于完畢集合基本運算所需的各項功能。classSet{pub1ic:Set();voidinput(intd)://向集合中添加一個元素intlength();〃返回集合中的元素個數(shù)intgctd(inti);//返回集合中位置i的元素voiddisplay。;//顯示集合的所有元素Setoperator+(Sets1);//成員運算符重載函數(shù),實現(xiàn)集合的并運算Setoperator-(Sets1);//成員運算符重載函數(shù),實現(xiàn)集合的差運算Setoperator*(Sets1);//成員運算符重載函數(shù),實現(xiàn)集合的交運算Setoperator=(Sets1);//成員運算符重載函數(shù),實現(xiàn)集合的賦值運算protecled:intlen;//記錄結(jié)合中元素的個數(shù);ints[MAX];//存放集合中的元素};#inc1ude<iostream>usingnamespacestd;constintMAX=50;classset{publie:set();voidinput(intd);intlength();intgetd(inti);voiddisp();setoperator+(setsi);?setoperator-(sets1);osetoperator*(setsi);operator=(setsi);protectcd:int1en;ints[MAX];);set::set(){len=0;o//s={0};cout<<"***建立一個集合***\n”;)voidset::input(intd){alen=d;cout<<"輸入集合元素"vvd?"個:";for(inti=0;i<d;i++)。cin>>s[i];)intset::lengih()(intn=0;whi1e(s[n]!='\0r)(*n++;}?retuni

intset::getd(inti)?return0;)voidset::disp()(afor(inti=0;i<len;i++)cout?s[ij<<"?//cout<<endl;)setset::operator+(sets1)setset::operator+(sets1)setset::operator+(sets1)/-setset::operator+(sets1)/--———并運算---———“/strcat(s,sl.s);for(inti=0;ifor(inti=0;ifor(inti=0;i<1en;i++)for(inti=0;i<1en;i++)H-or(intj=0;j<s1.Ien;j++)〃在sl.s[]中選出不相同的//選出相同的元素刪抻得到si.s與s不同的元素for(;j<s1.1en:j++)gosl.s[j]=sl.s[j+1];*__s1.1en;00for(intj=0;j<sl.len;j++)〃將si.s[]中不相同的加在s口后面as[len]=si.s[j];len++:°}s[len+s1.1enl='\0f;return*this;)差運算-一setset::operator-(sets1)//--一—一——(差運算-一。intt;?for(inti=0;i<s1.len;i++){wfor(intj=0;j<1en;j++)(。oif(s1.s[i]==s[j])//選出s與s1.s中相同的元素并且刪除掉(°°=j;。for(;l<1en;i++)。。s[t]=s[t+1]:s--1en;°I00}setset::operator*(setsi)//--一交運算-一一(4ntm[MAX];nt1=0;for(inti=0;i<sl.len;i++),{°for(intj=0;j<len;j++)//選出相同的元素(。°if(sl.s[i]==s[jj)g(m[1J=s[j];g1++;°}00}a}for(i=0;i<1;i++)。s[i]=m[i];?s[1]='O';en=1;0^return*this;setset::operator=(sets1)。for(inti=0;i<si.1ength();i++)。s[i]=s1.s[i];Men=s1.len;?return*this;}intmain(){?intn;setC;setA;scoutVV”建立具有幾個元素的集合;?cin>>n;A.input(n);0setB;-cout?"建立具有幾個元素的集合:";cin?n;?B.input(n);。cout?endl;cout?"兩集合的差集(A-B)為:";C=A-B:C.disp();cout?end1;Cout?"兩集合的交集(A*B)為:";aC=A*B;C.disP();?cout<<endl:*//*?coutVv”兩集合的并集(A+B)為:";C=A+B;C.disp();cout<<endl;*/^return0;}說明分別分開運營6、寫一個程序,定義抽象類Containcr:classContainer{protected:doubleradius;public:Conlainer(doubler);〃抽象類Container的構(gòu)造函數(shù)virtualdoublesurface_area()=0://純虛函數(shù)surface_areavirtualdoublevolume()=0;//純虛函數(shù)vo1ume【規(guī)定】建立3個繼承Container的派生類:Sphere(球體)、Cylinder(圓柱體)、Cube(正方體),讓每一個派生類都包含虛函數(shù)surface_area()和volume。,分別用來球體、圓柱體和正方體的表面積和體積。規(guī)定寫出主程序,應(yīng)用C++的多態(tài)性,分別計算邊長為6.0的正方體、半徑為5.0的球體,以及半徑為5.0和高為6.0的圓柱體的表面積和體積。#inc1ude<iostream>#include<string>usingnamespacestd;classcontainer{protected:doub1eradius;pub]ic:container(doubleradius1);virtualdoublesurface_area()=0;virtua1doub1evo1ume()=0;};container::container(doubleradius1){radius=radiusi;)//派生類cube、sphere與cylinderclasscube:publiccontainerpublie:?cube(doubleradius1):container(radius1){}virtua1doublesurface_area();

virtualdoublevo1ume();};doub1ecube::surface_area()(return6*radius*radius;doublecube::volume(){returnradius*radius*radius;Iclasssphere:pub1iccontainer{public:sphere(doub1eradius1):container(radiusl){)virtua1doublesurfacc_arca();virtua1doublevolume();};doubIesphere::surface_area()aimag=1;}1ex&b)1ex&b)1ex&b)Complexoperator+(Comp1ex&a,Co(1ex&b)Complextemp;temp.real=a.real+b.rea1;otcmp.imag=a.imag+b.imag;aretuinternp;}voidComplex::printf()(?cout<<real;aif(imag>0)COUt?'1+";?if(imag!=0)0cout?imag<<'i'<<cnd1;)voidmain()(0complexc1(2.5,3.7),c2(4.2,6.5),c3;oc3=cl+c2;c3.printf():)■"C:\USERS\HP\vc\sadasdas\Debug\siS.7+10.2iPressanykeytocontinuercturn4*3.14*radius*radius;doublesphere::vo1ume()(return4.0/3.0*3.14*radius*radius*radius;)classcylinder:publiccontainer(protected:doublehigh;public:cy1inder(doub1ehigh1,doubleradius1):container(radius1){high=highl;}virtualdoub1esurface_area();virtualdoublevolume(););doublecylindcr::surface_area()return2*3.14*radius*radius+2*3.14*high*radius;doublecylinder::volume()return3.14*radius*radius*high;)intmain(){container*p;cubecc(6.0);spheress(5.0);cy1indercy(6.0,5.0);p=&cc;cout<<"正方體的表面積:"<<p->surface_area()?endl;cout<<"正方體的體積:"V<p->volume()<<endI;p=&ss;cout<v"球體的表面積:"v<p—>surface_area()?end1;couivv”球體的體積:"v〈p->volume()<<endl;P=&cy;cout<〈”圓柱體的表面積:“Vvp->surface_area()?endl;cout?"圓柱體的體積:"Vvp->vokime()?end1;return0;

2、編寫一個程序,其中設(shè)計一個時間類Time,用來保存時、分、秒等私有數(shù)據(jù)成員,通過重載操作符"+”實現(xiàn)兩個時間的相加。規(guī)定將小時范圍限制在大于等于0,分鐘范圍限制在0?59分,秒鐘范圍限制在0?59秒。提醒:時間類Time的參考框架如下:classTime(public:Time(inth=0,intm=0,ints=0);//構(gòu)造函數(shù)Timeopcrator+(Time&);//運算符重載函數(shù),實現(xiàn)兩個時間的相加voiddisptime();〃顯示時間函數(shù)private:inthours,minutes,seconds;):#include<iostream>usingnamespaccstd;c1assTime(public:Time(inth=0,intm=0,ints=0);//構(gòu)造函數(shù)Timeoperator+(Time&);//運算符重載函數(shù),實現(xiàn)兩個時間的相加voiddisptime();〃顯示時間函數(shù)private:“nthours;intminutes;intseconds;};Time::Time(inthjntm,ints)(hours=h;orninutes=m;seconds=s;ITimeTime::operator+(Time&t)(inth,m,s;s=(t.$cconds+seconds)%60;am=(minutes+t.minutes+(t.seconds+seconds)/60)%60;?h=hours+t.hours+(minutes+t.minutes+(t.seconds+seconds)/60)/60;4iours=h;minutes=m;scconds=s;?>return*this;}voidTime::disptime()(ocout?hours?H:"<<minutes<<**:"?seconds<<',.,'<<end1;)voidInput(int&h,int&m,int&s)(soutVV”輸入時間:";?cin?hacin?m?cin?s;owhile(m<0|Im>59||s<0I|s>59)°{cout<<"******時間輸入錯誤!請重新輸!******\n”;coutVv”輸入時間:";cin?h;cin?m;cin>>s;)|intmain()(inthI,mI,sI,h2,m2,s2;Input(h1,ml,s1);nput(h2,m2,s2);oTimeA(hl,m1,sl),B(h2,m2,s2);A=A+B;◎A.disptime();?return0;)■.C:\USERS\HP\vc\sadasdas\Debuc輸入時間2332輸入時間:71243B:36:15.Pressanykeytocontinue

3、用友元運算符函數(shù)或成員運算符函數(shù),重載運算符“+"*,,,實*,,,實*,,,實現(xiàn)對實驗二中實現(xiàn)的矩陣類的對象的加、減、乘法。*,,,實include<iostream>definehang2define1ie2c1assMatrix(private:?intRow;intColumn;intMATRIX[hang][lie];public:Matrix(intr?intc)°{?Row=r;8coiumn=c;)sMatrix(){}voidTypeMatrix();avoidPrint()const;,Matrix&opera(or=(constMatrix&rhs);aMatrixoperator+(constMatrix&rhs);Matrixoperator—(constMatrix&rhs);voidMatrix::TypeMatrix()std::coui<v"請輸入矩陣:"vvstd::end1;fbr(inti=0;i<hang;i++)for(intj=O;j<1ie;j++)^std::cin?MATRIX[i][j];voidMatrix::P

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論