




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選文檔天津理工大學計算機與通信工程學院實驗報告2013至2014學年第 二學期課程名稱高級語言程序設(shè)計R實驗(4 )實驗名稱多態(tài)程序設(shè)計實驗時間2014年4 月28日第3節(jié)至第6節(jié)學號姓名專業(yè)信息安全主講教師唐召東輔導教師唐召東軟件環(huán)境VC+6硬件環(huán)境PC機實驗目的(1)掌握運算符重載的方法;(2)掌握使用虛函數(shù)實現(xiàn)動態(tài)多態(tài)性;實驗內(nèi)容(應(yīng)包括實驗題目、實驗要求、實驗任務(wù)等)二、練習項目:1 .定義Point類,有坐標x,y兩個成員變量,利用友元函數(shù)對Point類重載“ +”運算符,實現(xiàn)對坐標值的改變。具體要求如下:(1) 編寫程序定義Point類,在類中定義整型的私有成員變量x,y;(2)
2、 在類中定義兩個友元函數(shù),分別重載前置+和后置+;(3) 編寫主函數(shù)測試。注意函數(shù)有無返回值的區(qū)別,以及返回值是否帶有&應(yīng)用符號。2 .定義Point類,有坐標x,y兩個成員變量,利用運算符重載對Point類重載“ +”運算符,實現(xiàn)對坐標值的改變。具體要求如下:(1) 編寫程序定義Point類,在類中定義整型的私有成員變量x,y;(2) 定義成員函數(shù) Point& operator+(); Point operator+(int); 以實現(xiàn)對 Point 類重載"+”運算符,分別重載前置+和后置+;(3) 編寫主函數(shù)測試。3 .定義一個分數(shù)類,通過重載運算符實現(xiàn)分數(shù)的
3、四則運算、求負運算和賦值運算。其中,要求加法+”和減法-'”用友元函數(shù)實現(xiàn)重載,其他運算符用成員函數(shù)實現(xiàn)重載。4 .編寫程序,定義抽象基類Container ,由此派生出2個派生類球體類 Sphere,圓柱體類Cylinder ,分別用虛函數(shù)分別計算表面積和體積。(1) 球體的表面積為:4 r 2 ,球體的體積為 r 3 ;3(2) 圓柱表面積為:2ttR (h+R)圓柱體的體積 % R2h定義相應(yīng)的對象,編寫主函數(shù)測試。5 .設(shè)計一個時鐘類 TIME ,內(nèi)含數(shù)據(jù)成員 hour, minute , second表示時間,成員函數(shù) set()設(shè)置時間數(shù)據(jù), show()顯示時間數(shù)據(jù)。重載
4、運算符+和-(具有返回值),每執(zhí)行一次+ , second自增1,執(zhí)行一次-,second 自減1。second和minute的值在059區(qū)間循環(huán)(滿59后再自增則歸 0, minute力口 1; second為0時再自減 則為59, minute減1)。hour的值在023區(qū)間循環(huán)。可編輯實驗過程與實驗結(jié)果(可包括實驗實施的步驟、算法描述、流程、結(jié)論等) 1.源代碼:#include <iostream> using namespace std;class Pointprivate:double x,y;public:Point(double _x=0,double _y=0)
5、x=_x; y=_y;Point() void setx(double _x) x=_x;void sety(double _y) y=_y;double getx() return x;double gety() return y; friend void operator<<(ostream &out,const Point &p) out<<"Point("<<p.x<<","<<p.y<<")n"friend void operator+(
6、Point &p,int);friend void operator+(Point &p);;void operator+(Point &p,int) p.x+;p.y+;void operator+(Point &p) +p.x;+p.y;int main()Point a(1,1),b(3,4);cout<<a;cout<<b;a+;+b;cout<<a;cout<<b;return 0;輸出結(jié)果:o int3.4>o intoicti*ocess i*e:tulphed 3execution time
7、: 1 .497 sany keiF tn continue2.源代碼:#include <iostream> using namespace std;class Pointprivate:double x,y;public:Point(double _x=0,double _y=0) x=_x;y=_y;Point()void setx(double _x) x=_x; void sety(double y)y=_y;double getx()return x;double gety()return y;friend void operator<<(ostream &
8、amp;out,const Point &p)out<<"Point("<<p.x<<","<<p.y<<")n"Point operator+(int)x+=2;y+=2;return *this;Point &operator+()+x;+y;return *this;int main()Point a(1,1),b(3,4);cout<<a;cout<<b;a+;+b;cout<<a;cout<<b;ret
9、urn 0;輸出結(jié)果:% in 七 f I. , 15%lnt<3f4>%int 3)>oint<4,5>*rocess retupn&d <0x0> execution tine : 1.473 s*i*ess &ny keip to Czontiriue.3.源代碼:#include <iostream.h>#include <math.h>class Fenshu private: int zi;int mu;public:Fenshu(int _zi=0,int _mu=1) zi=_zi; mu=_mu
10、;Fenshu()void setzi(int _zi=0) zi=_zi;void setmu(int _mu=1) mu=_mu;int getzi() return zi;int getmu() return mu;void print();friend Fenshu operator+(const Fenshu& f1,const Fenshu& f2); friend Fenshu operator-(const Fenshu& f1,const Fenshu& f2); Fenshu operator*(int n )Fenshu x;x.zi=zi
11、*n;x.mu=mu;return x;Fenshu operator/(int n)if(n=0)cout<<"Nagetive!"return *this;Fenshu x;x.zi=zi;x.mu=mu*n;return x;Fenshu operator-。Fenshu x;x.zi=-zi;x.mu=mu;return x;void operator=(const Fenshu & f)zi=f.zi;mu=f.mu;Fenshu operator+(const Fenshu& f1,const Fenshu& f2)Fensh
12、u f;f.zi=f1.zi*f2.mu+f2.zi*f1.mu;f.mu=f1.mu*f2.mu;return f;Fenshu operator-(const Fenshu& f1,const Fenshu& f2) Fenshu f;f.zi=f1.zi*f2.mu-f2.zi*f1.mu;f.mu=f1.mu*f2.mu;return f;void Fenshu:print()if(zi=0)cout<<0<<endl;elseint _zi=abs(zi>mu?zi:mu),_mu=abs(mu<zi?mu:zi);int x;x=
13、_zi % _mu;while(x!=0)_mu=_zi;_zi=x;x=_mu % _zi;zi/=(_zi>_mu?_mu:_zi);mu/=(_zi>_mu?_mu:_zi);cout<<zi<<"/"<<mu<<endl;int main()Fenshu x(2,4),y(4,4);Fenshu z,a,b,c,d,e;z=x+y;a=y-x;b=x-y;c=-x;d=y*(-i);e=y/2;乙print();a.print();b.print();c.print();d.print();e.print(
14、);return 0;輸出結(jié)果:3/21/2-1/2k/2pl/11/2Ppoeesa returned & <0x0)ion time i 1.499 s:Pt'Es s any key 七o coni inu.e ,4.源代碼:#include <iostream> using namespace std; const double PI=3.14; class Container private:double r;double h;public:Container()Container(double _r=0.0,double _h=0.0) r=_r;
15、h=_h; void setr(double _r=0.0) r=_r; double getr() return r; void seth(double _h=0.0) h=_h; double geth() return h;virtual double s()=0;virtual double v()=0;class Spherepublic Container public:Sphere()Sphere(double _r=0.0):Container(_r) double s() return 4*PI*getr()*getr(); double v() return (double
16、(4)/3)*PI*getr()*getr()*getr(); ;class Cylinderpublic Container public: Cylinder()Cylinder(double _r=0.0,double _h=0.0):Container(_r,_h) double s() return 2*PI*getr()*(geth()+getr(); double v() return 2*PI*getr()*geth(); ;int main() Container *p;Sphere a;Cylinder b(1,2);p=&a;cout<<"Sp
17、here s="<<p->s()<<" v="<<p->v()<<endl; p=&b;cout<<"Cylinder s="<<p->s()<<" v="<<p->v()<<endl;return 0;輸出結(jié)果:s-12.St u =4_Cy 1 indei* s =18 _ 84 u =12 .StProcess returned & <0x0? exetutian t
18、ime ; 2.836 s Ppess an key to cont inue.5.源代碼:#include <iostream> using namespace std;class Timeprivate:int hour;int minute;int second;public:Time(int=0,int=0,int=0);Time()void sethour(int);void setminute(int);void setsecond(int);int gethour();int getsecond();int getminute();void set(int=0,int
19、=0,int=0);void show();Time& operator+(int);Time& operator-(int);Time:Time(int h,int m,int s) if(s>59)s%=60;m=m+s/60;if(m>59)m%=60;h=h+m /60;if(h>23) h%=24;hour=h;minute=m;second=s;void Time:sethour(int h)if(h>23) h%=24;hour=h;void Time:setminute(int m)if(minute>59)minute%=60;h
20、our=hour+minute/60;if(hour>23) hour%=24;minute=m;void Time:setsecond(int s)if(s>59)minute=minute+s/60;s%=60;if(minute>59)hour=hour+minute/60; minute%=60;if(hour>23) hour%=24;second=s;int Time:gethour()return hour;int Time:getsecond()return second;int Time:getminute()return minute;void Ti
21、me:set(int h,int m,int s)if(s>59)m=m+s/60;s%=60;if(m>59)h=h+m /60;m%=60;if(h>23) h%=24;hour=h;minute=m;second=s;void Time:show()cout<<hour<<":"<<minute<<":"<<second<<endl;Time& Time:operator+(int)second+;if(second>59)minute=minu
22、te+second/60;second%=60;if(minute>59)hour=hour+minute /60;minute%=60;if(hour>23) hour%=24;return *this;Time& Time:operator-(int)second-;if(second<0)minute-;second=59;if(minute<0)minute=59;hour-;if(hour<0)hour=0; return *this;int main() Time t;int x,y,z;char temp;cout<<"
23、現(xiàn)在初始化計數(shù)器(Hour Minute Second ):"cin>>x;cin>>y;cin>>z;t.set(x,y,z);cout<<"現(xiàn)在時間是:"t.show();docout<<"輸入*重新設(shè)置計數(shù)器;"<<endl;cout<<"輸入+計數(shù)器遞加,輸入-計數(shù)器遞減;"<<endl;cout<<"輸入字母。計數(shù)器清零;"<<endl;cout<<"輸入
24、q退出計數(shù)器。"<<endl;cout<<"請輸入 >"cin>>temp;switch(temp) case '*':cout<<"現(xiàn)在初始化計數(shù)器(Hour Minute Second ):"cin>>x;cin>>y;cin>>z;t.set(x,y,z);cout<<"現(xiàn)在時間是:"t.show(); break;case '+':t+;cout<<"現(xiàn)在時間是:
25、"t.show();break;case '-':t-;cout<<"現(xiàn)在時間是:"t.show();break;case 'o':t.set(0,0,0);cout<<"現(xiàn)在時間是:"t.show();break;case 'q':break;default:cout<<"請輸入正確的數(shù)據(jù)!"<<endl;break;while(temp!='q');return 0;輸出結(jié)果:ill:1益矍一tocg-es r
26、eturnif( sub->getname()=sub_m->getnameO)*sub=*sub_m;sub_m+;sub_m-=num_m;sub+;sub-=shumu;void Cstudent:insert_s()錄入分數(shù)int temp;cout<<"Please input the scores.n"for(int i=0;i<shumu;i+)cout<<sub->getname()<<':'<<endl;cin>>temp;sub->setscore(
27、temp);sub+;sub-=shumu;void Cstudent:dill()int sum=0;double c=0.0,s=0.0;for(int i=0;i<shumu;i+)if(sub->getscore()>=95 && sub->getscore()<=100) sub->setpoint(4.5);else if(sub->getscore()>=90 && sub->getscore()<=95) sub->setpoint(4.0);else if(sub->get
28、score()>=85 && sub->getscore()<=90) sub->setpoint(3.5);else if(sub->getscore()>=80 && sub->getscore()<=85) sub->setpoint(3.0);else if(sub->getscore()>=75 && sub->getscore()<=80) sub->setpoint(2.5);else if(sub->getscore()>=70 &am
29、p;& sub->getscore()<=75) sub->setpoint(2.0);else if(sub->getscore()>=65 && sub->getscore()<=70) sub->setpoint(1.5); else if(sub->getscore()>=60 && sub->getscore()<=65) sub->setpoint(1.0); elsesub->setpoint(0.0);sub->setflag(true);sum=sum+sub->getscore();c=c+sub->getxuefen()*sub->getpoint();s=s+sub->getxuefen();sub+;)sub-=shumu;ave_g=double(sum)/shumu;ave_p=c/s;)void Cstudent:print_h() cout<<"ID Name sex class date average of score avera
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車行業(yè)全景洞察
- 可持續(xù)消費激勵的信息框架與效果研究
- 維修保養(yǎng)基礎(chǔ)知識
- 鋅離子電池隔膜的改性及電化學性能研究
- 新能源車企ESG實踐對綠色創(chuàng)新的影響研究
- 試車員安全培訓
- 2025年佛山市順德區(qū)環(huán)境運輸和城市管理局招考7人自考難、易點模擬試卷(共500題附帶答案詳解)
- 二零二五停薪留職員工離職補償與再就業(yè)服務(wù)合同
- 2025年度飲品連鎖店奶茶員工勞動合同
- 二零二五年度聯(lián)合體企業(yè)并購合作協(xié)議書
- 2024年中國山地滑道市場調(diào)查研究報告
- GB/T 2423.65-2024環(huán)境試驗第2部分:試驗方法試驗:鹽霧/溫度/濕度/太陽輻射綜合
- 【三菱】M800M80系列使用說明書
- 2024年巴中市中考歷史試卷(含答案解析)
- 高職高專教育英語課程教學基本要求-20211209120040
- 1《諫逐客書》公開課一等獎創(chuàng)新教學設(shè)計統(tǒng)編版高中語文必修下冊
- 《卓瑪》教案參考
- 四川省廣元市2023-2024學年八年級下學期7月期末道德與法治試題
- 2024年數(shù)獨完整版課件
- 鋼鐵是怎樣煉成的課件省公開課一等獎新名師課比賽一等獎?wù)n件
- 《中國飲食文化》課件-中國飲食文化溯源
評論
0/150
提交評論