高等程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告推薦_第1頁
高等程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告推薦_第2頁
高等程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告推薦_第3頁
高等程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告推薦_第4頁
高等程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告推薦_第5頁
已閱讀5頁,還剩56頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、高等程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱實(shí)驗(yàn)12運(yùn)算符重載(2)系別姓名學(xué)號(hào)班級(jí)實(shí)驗(yàn)時(shí)間實(shí)驗(yàn)地點(diǎn)實(shí)驗(yàn)成績一、實(shí)驗(yàn)?zāi)康募耙筮M(jìn)一步理解運(yùn)算符重載,運(yùn)用成員函數(shù)和友元函數(shù)等方法實(shí)現(xiàn)運(yùn)算符的重載。二、實(shí)驗(yàn)環(huán)境及相關(guān)情況(包含使用軟件、實(shí)驗(yàn)設(shè)備、主要儀器及材料等)硬件設(shè)備:聯(lián)網(wǎng)的個(gè)人計(jì)算機(jī)操作系統(tǒng):Windowsxp編譯系統(tǒng):DevC+三、實(shí)驗(yàn)內(nèi)容及步驟(包含簡(jiǎn)要的實(shí)驗(yàn)步驟流程)1、重載函數(shù)調(diào)用運(yùn)算符(),將以下的二維數(shù)組的下標(biāo)表示方法:chessBoardrowcolumn改為常用的表不方法:chessBoard(row,column)2、重載下標(biāo)運(yùn)算符使之返回集合中最大的元素、次最大的元素以及第三大的元素。3

2、、開發(fā)多項(xiàng)式類Polynomial,多項(xiàng)式的每一項(xiàng)用數(shù)組表示,每項(xiàng)包含一個(gè)系數(shù)和一個(gè)指數(shù)。例如:2x4的指數(shù)為4,系數(shù)為2。請(qǐng)開發(fā)一個(gè)完整的Polynomial類,包括構(gòu)造函數(shù)、析構(gòu)函數(shù)以及“get”函數(shù)和“set”函數(shù)。該類還要提供下述重載的運(yùn)算符(分別使用成員函數(shù)和友元函數(shù)):1)重載加法運(yùn)算符+,將兩個(gè)多項(xiàng)式相加;2)重載減法運(yùn)算符-,將兩個(gè)多項(xiàng)式相減;3)重載賦值運(yùn)算符=,將一個(gè)多項(xiàng)式賦給另外一個(gè)多項(xiàng)式;4)重載乘法算符*,將兩個(gè)多項(xiàng)式相乘;5)重載加法賦值運(yùn)算符十二、減法賦值運(yùn)算符-=以及乘法賦值運(yùn)算符*=。4設(shè)計(jì)一個(gè)日期類Date,,要求:(1)包含年(year)、月(month)

3、和日(day)私有數(shù)據(jù)成員。(2)包含構(gòu)造函數(shù),重載關(guān)于一日期加上天數(shù)的加法運(yùn)算符+、重載關(guān)于一日期減去天數(shù)的減加運(yùn)算符-、重載輸出運(yùn)算符<<與輸入運(yùn)算符>>等。提示:由于各C+編譯器對(duì)于重載輸入/出運(yùn)算符為友元的兼容性都存在問題,最好重載輸入/出運(yùn)算符不聲明為成員函數(shù)與友元函數(shù),而聲明一般函數(shù),為編程更方便,可增加一些成員函數(shù),比如:voidSetYear(inty);/設(shè)置年intSetMonth(intm);設(shè)置月intSetDay(intd);設(shè)置日intGetYear()const;intGetMonth()const;intGetDay()const;sta

4、ticintlsLeapyear(inty);staticintGetDays(inty);staticintGetDays(constDate&d);/staticintDateToNum(constDate&d);返回年返回月返回日判斷年份y是否為潤年年份y的天數(shù)日期d當(dāng)前月份的天數(shù)返回從公元1年1月1日起的天數(shù)由從公元1年1月1日起的天數(shù)返回日期潤年條件:年份能被4整除,并且年份不能被100整除,或者年份能被400整除潤年天數(shù):366平年天數(shù):365潤年2月份天數(shù):29平年2月份天數(shù):285.設(shè)計(jì)一個(gè)時(shí)間類Time,要求:(1)包含時(shí)(hour)、分(minute)和秒(

5、second)私有數(shù)據(jù)成員。(2)包含構(gòu)造函數(shù),重載關(guān)于一時(shí)間加上另一時(shí)間的加法運(yùn)算符+、重載關(guān)于一時(shí)間減去另一時(shí)間的減加運(yùn)算符-、重載輸出運(yùn)算符vv與輸入運(yùn)算符>>等。提示:可仿照第4題編程實(shí)現(xiàn),可將時(shí)間轉(zhuǎn)換成秒數(shù),將秒數(shù)轉(zhuǎn)成時(shí)間進(jìn)行輔助編程。時(shí)間轉(zhuǎn)換成秒數(shù):不少數(shù)=時(shí)*3600+分60+秒秒數(shù)轉(zhuǎn)換成時(shí)間:時(shí)=不少數(shù)/3600分=(秒數(shù)-時(shí)*3600)/60秒二秒數(shù)60為編程更方便,可增加一些成員函數(shù),比如:id SetHour(int hh);SetM inu te(i nt mm);id SetSec on d(i nt ss);int GetHour() con st;in

6、t GetMi nute() con st;int GetSec on d() con st;設(shè)置小時(shí)/設(shè)置分鐘/設(shè)置秒/返回小時(shí)返回分鐘返回秒四、實(shí)驗(yàn)結(jié)果(包括程序或圖表、結(jié)論陳述、數(shù)據(jù)記錄及分析等,可附頁)chessBoardrowcolum n1、重載函數(shù)調(diào)用運(yùn)算符(),將以下的二維數(shù)組的下標(biāo)表示方法:改為常用的表示方法:chessBoard(row,column)代碼實(shí)現(xiàn):#include<iostream>#include<conio.h>usingnamespacestd;classshuzuintchessBoard88;public:shuzu()for

7、(inti=0;iv8;i+)for(intj=0;j<8;j+)chessBoardij=i+j;)intoperator()(inta,intb)returnchessBoardab;);intmain()shuzua;cout«”輸出(6,7)="vva(6,7)vvendl;cout<<"矩陣:“vvendl;for(inti=0;i<8;i+)(for(intj=0;j<8;j+)cout<va(i,j)vv,tn;cout«endl;)getch();return0;結(jié)果截圖:2、重載下標(biāo)運(yùn)算符使之返回集合

8、中最大的元素、次最大的元素以及第三大的元素3、開發(fā)多項(xiàng)式類Polynomial,多項(xiàng)式的每一項(xiàng)用數(shù)組表示,每項(xiàng)包含一個(gè)系數(shù)和一個(gè)指數(shù)。例如:2x,的指數(shù)為4,系數(shù)為2。請(qǐng)開發(fā)一個(gè)完整的Polynomial類,包括構(gòu)造函數(shù)、析構(gòu)函數(shù)以及“get”函數(shù)和“set”函數(shù)該類還要提供下述重載的運(yùn)算符(分別使用成員函數(shù)和友元函數(shù)):1)重載加法運(yùn)算符+,將兩個(gè)多項(xiàng)式相加;2 )重載減法運(yùn)算符-,將兩個(gè)多項(xiàng)式相減;3 )重載賦值運(yùn)算符二,將一個(gè)多項(xiàng)式賦給另外一個(gè)多項(xiàng)式;4)重載乘法算符*,將兩個(gè)多項(xiàng)式相乘;5)重載加法賦值運(yùn)算符+=、減法賦值運(yùn)算符-=以及乘法賦值運(yùn)算符*=。代碼實(shí)現(xiàn):#include&l

9、t;iostream>#include<conio.h>usingnamespacestd;classJprivate:inta(5);public:J(ints)for(inti=0;i<5;i+)ai=si;voidpaixu()(for(inti=0;i<4;i+)(for(intj=0;jv4-i;j+)(if(a0>a0+1)inttemp=aj;aU=aj+1;aj+1=temp;intoperator(intb)returnab;intmain()ints5;cout«”請(qǐng)輸入5個(gè)數(shù):”vvendl;for(inti=0;iv5;i+

10、)Jj(s);j-paixu();coutvv”最大的元素、次最大的元素以及第三大的元素依次為:"vvj4vvM,"vvj3vvH,Hvvj2wendl;getch();return0;)結(jié)果截圖:4設(shè)計(jì)一個(gè)日期類Date,,要求:(1)包含年(year)、月(month)和日(day)私有數(shù)據(jù)成員。(2)包含構(gòu)造函數(shù),重載關(guān)于一日期加上天數(shù)的加法運(yùn)算符+、重載關(guān)于一日期減去天數(shù)的減加運(yùn)算符、重載輸出運(yùn)算符vv與輸入運(yùn)算符>>等。提示:由于各C+編譯器對(duì)于重載輸入/出運(yùn)算符為友元的兼容性都存在問題,最好重載輸入/出運(yùn)算符不聲明為成.員函數(shù)與友元函數(shù),而聲明一般函

11、數(shù),為編程更方便,可增加一些成員函數(shù),比如:void SetYear(i nt y);設(shè)置年int SetMonth(int m);設(shè)置月int SetDay(i nt d);設(shè)置日int GetYear() con st;返回年int GetMo nth() con st;返回月int GetDay() con st;返回日static int lsLeapyear(int y);判斷年份y是否為潤年static int GetDays(i nt y);年份y的天數(shù)static int GetDays(const Date &d); /日期d當(dāng)前月份的天數(shù)static int Dat

12、eToNum(co nst Date &d);返回從公元1年1月1日起的天數(shù)由從公元1年1月1日起的天數(shù)返回日期潤年條件:年份能被4整除,并且年份不能被100整除,或者年份能被400整除潤年天數(shù):366平年天數(shù):365潤年2月份天數(shù):29平年2月份天數(shù):28(1)程序?qū)崿F(xiàn)#include',iostream.h,'#include<conio.h>classDatepublic:Date(inta=0,intb=O,intc=0);voidSet_Date(inta,intb,intc);voidGet_Date();Dateoperator+(int);D

13、ateoperator-Ant);friendostream&operator«(ostream&,Date&);friendistream&operator»(istream&,Date&);private:intyear,mounth,date,m;Date:Date(inta,intb,intc)year=a;mounth=b;date=c;voidDate:Set_Date(intajntbjntc)year=a;mounth=b;date=c;voidDate:Get_Date()coutvvyearvv“年“vvm

14、ounthvv"月"vvdatevv"日"vvendl;elsecoutvv”剛才輸入的天數(shù)不符合要求!”Vvendl;DateDate:operator+(inta)if(a>28)m=0;elseif(year%400=0)|(year%4=0)&&(year%100!=0)if(mounth=4)|(mounth=6)|(mounth=9)|(mounth=11)if(date+a)<=30)date=date+a;elsedate=date+a-30;mounth+;)else(if(mounth=2)(if(date

15、+a)<=29)date=date+a;elsedate=date+a;mounth+;處理2月elseif(date+a)<=31)date=date+a;elsedate=date+a-31;if(mounth=12)year+;mounth=1;elsemounth+;)elseif(mounth=4)|(mounth=6)|(mounth=9)|(mounth=11)if(date+a)<=30)elsedate=date+a;date=date+a-30;mounth+;elseif(mounth=2)if(date+a)<=28)date=date+a;el

16、sedate=date+a-28;mounth+;elseif(date+a)<=31)date=date+a;elsedate=date+a-31;if(mounth=12)year+;mounth=1;elsemounth+;return*this;DateDate:operator-(inta)if(a>28)m=0;return*this;elseif(year%400=0)11(year%4=0)&&(year%100!=0)if(mounth=5)|(mounth=7)|(mounth=10)|(mounth=12)if(date>=a)date=

17、date-a;elsedate=date-a+30;mounth-;else(if(mounth=3)if(date>=a)date=date-a;elsedate=date-a+29;mounth-;elseif(date>=a)date=date-a;elsedate=date-a+31;if(mounth=1)year-;mounth=12;elsemounth-;elseif(mounth=5)|(mounth=7)|(mounth=10)|(mounth=12)if(date>=a)date=date-a;elsedate=date-a+30;mounth-;els

18、eif(mounth=3)if(date>=a)date=date-a;elsedate=date-a+28;mounth-;elseif(date>=a)date=date-a;elsedate=date-a+31;if(mounth=1)year-;mounth=12;elsemounth-;return*this;ostream&operator«(ostream&output,Date&a)coutvva.yearvvn年”vva.mounthvv”月n«a.date«H日H«endl;returnoutput

19、;istream&operator»(istream&input,Date&a)cout«“年:”;cin>>a.year;cout«“月:“;cin>>a.mounth;cout«“日:”;cin>>a.date;returninput;intmain()(Datea,b,c;intx,y,z;coutvv”請(qǐng)輸入第4、日期:H«endl;cout«“年:“;cin>>x;cout«“月:”;cin»y;cout«nB:n;cin&

20、gt;>z;a.Set_Date(x,y,z);c=a;coutvv”請(qǐng)輸入第二個(gè)日期:“vvendl;cin>>b;coutvv”請(qǐng)輸入需要加上的天數(shù):“vvendl;cin>>z;a=a+z;coutvv"H期"vvcvv”加上“vvzvv“天“vv”得到的日期為:n«endl;a. Get_Date();a=c;coutvv”請(qǐng)輸入需要減去的天數(shù):“vvendl;cin>>z;coutw"日期"vvbvv"減去"vvzvv”天W1得到的日期為:“vvendl;b=b-z;b.

21、Get_Date();getch();return0;(2)結(jié)果截圖5.設(shè)計(jì)一個(gè)時(shí)間類Time,要求:(1)包含時(shí)(hour)、分(minute)和秒(second)私有數(shù)據(jù)成員。(2) 包含構(gòu)造函數(shù),重載關(guān)于一時(shí)間加上另一時(shí)間的加法運(yùn)算符+、重載關(guān)于一時(shí)間減去另一時(shí)間的減加運(yùn)算符-、重載輸出運(yùn)算符<<與輸入運(yùn)算符>>等。提示:可仿照第4題編程實(shí)現(xiàn),可將時(shí)間轉(zhuǎn)換成秒數(shù),將秒數(shù)轉(zhuǎn)成時(shí)間進(jìn)行輔助編程。時(shí)間轉(zhuǎn)換成秒數(shù):秒數(shù)=時(shí)*3600+分文60+秒秒數(shù)轉(zhuǎn)換成時(shí)間:時(shí)二秒數(shù)/3600分=(秒數(shù)時(shí)*3600)/60秒二秒數(shù)60為編程更方便,可增加一些成員函數(shù),比如:voidSe

22、tHour(inthh);設(shè)置小時(shí)voidSetMinute(intmm);/設(shè)置分鐘voidSetSecond(intss);/設(shè)置秒int GetHour() con st;/ 返回小時(shí)intGetMinute()const;返回分鐘intGetSecond()const;返回秒#include<iostream>#include<conio.h>usingnamespacestd;classTimeinthour,minute,second,sall;public:Timeoperator+(Timea);Timeoperator-(Timea);Timeoper

23、ator«(Time&a);Timeoperator»(Time&a);設(shè)置小時(shí)voidSetHour(inthh);void SetM inu te(i nt mm);設(shè)置分鐘voidSetSecond(intss);設(shè)置秒intGetHour()const;返回小時(shí)intGetMinute()const;返回分鐘intGetSecond()const;返回秒intGetSall()const;Time:Time()second=0;hour=0;minute=O;sall=0;TimeTime:operato葉(Timea)Timetemp;temp.s

24、all=sall+a.sall;temp.hour=temp.sall/3600;temp,minute=(temp.sall-3600*temp.hour)/60;temp.second=temp.sall%60;returntemp;)TimeTime:operator-(Timea)Timetemp;temp.sall=sall-a.sall;temp.hour=temp.sall/3600;temp,minute=(temp.sall-3600*temp.hour)/60;temp.second=temp.sall%60;returntemp;TimeTime:operator<

25、v(Time&a)minute=a.minute;hour=a.hour;second=a.second;sall=a.sall;return*this;TimeTime:operator»(Time&a)a.minute=minute;a.second=second;a.hour=hour;a.sall=sall;returna;voidTime:SetHour(inthh)設(shè)置小時(shí)hour=hh;voidTime:SetMinute(intmm)設(shè)置分鐘minute=mm;voidTime:SetSecond(intss)設(shè)置秒second=ss;sall=360

26、0*hour+60*minute+second;intTime:GetHour()const返回小時(shí)returnhour;返回分鐘返回秒intTime:GetMinute()const(returnminute;intTime:GetSecond()const(returnsecond;intTime:GetSall()const(returnsail;intmain()Timet1,t2,t3,t4,t5,t6,t7,t8;ints1,s2,h1,h2,m1,m2;cout«”請(qǐng)輸入時(shí)分秒(1):”cin>>h1»m1»s1;cout«"請(qǐng)輸入時(shí)分秒(2):”cin>>h2»m2»s2;tl.SetHour(hl);tl.SetMinute(m1);tl.SetSecond(s1);t2.SetHour(h2);t2.SetMin

溫馨提示

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

評(píng)論

0/150

提交評(píng)論