有理數(shù)運(yùn)算C++課程設(shè)計(jì)報(bào)告_第1頁(yè)
有理數(shù)運(yùn)算C++課程設(shè)計(jì)報(bào)告_第2頁(yè)
有理數(shù)運(yùn)算C++課程設(shè)計(jì)報(bào)告_第3頁(yè)
有理數(shù)運(yùn)算C++課程設(shè)計(jì)報(bào)告_第4頁(yè)
有理數(shù)運(yùn)算C++課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、.課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)題目:有理數(shù)運(yùn)算 學(xué)生姓名:馮紹文 專 業(yè):軟件工程班 級(jí):1221815學(xué) 號(hào):201220181502指導(dǎo)教師:許志文 2013年06月20日東華理工大學(xué)1. 有理數(shù)運(yùn)算問(wèn)題描述有理數(shù)是一個(gè)可以化為一個(gè)分?jǐn)?shù)的數(shù),例如2/3,533/920,-12/49都是有理數(shù),而就為無(wú)理數(shù)。在C+中,并沒(méi)有預(yù)先定義有理數(shù),需要時(shí)可以定義一個(gè)有理數(shù)類,將有理數(shù)的分子和分母分別存放在兩個(gè)整型變量中。對(duì)有理數(shù)的各種操作都可以用重載運(yùn)算符來(lái)實(shí)現(xiàn)。基本要求定義并實(shí)現(xiàn)一個(gè)有理數(shù)類,通過(guò)重載運(yùn)算符+、-、*、/對(duì)有理數(shù)進(jìn)行算術(shù)運(yùn)算,通過(guò)重載運(yùn)算符=實(shí)現(xiàn)判定兩個(gè)有理數(shù)是否相等。寫(xiě)一個(gè)優(yōu)化函數(shù),它的

2、作用是使有理數(shù)約去公分母,也即是使保存的有理數(shù)分子和分母之間沒(méi)有公約數(shù)(除去1以外)。此外,還要定義一個(gè)將有理數(shù)轉(zhuǎn)換為實(shí)數(shù)的函數(shù),再加上構(gòu)造函數(shù)和有理數(shù)輸出函數(shù)。測(cè)試數(shù)據(jù)在應(yīng)用程序中,創(chuàng)建若干有理數(shù)對(duì)象,通過(guò)帶參數(shù)的構(gòu)造函數(shù)使得各有理數(shù)對(duì)象值各不相同,然后分別進(jìn)行各類運(yùn)算,輸出運(yùn)算結(jié)果,檢驗(yàn)其正確性。實(shí)現(xiàn)提示設(shè)有兩個(gè)有理數(shù)a/b和c/d,則有:(1) 有理數(shù)相加 分子=a*d+b*c;分母=b*d(2) 有理數(shù)相減 分子=a*d-b*c;分母=b*d(3) 有理數(shù)相乘 分子=a*c; 分母=b*d(4) 有理數(shù)相除 分子=a*d; 分母=b*c優(yōu)化函數(shù)在創(chuàng)建有理數(shù)對(duì)象時(shí)應(yīng)執(zhí)行,在執(zhí)行其它各種運(yùn)

3、算之后也需執(zhí)行它,這樣可保證所存儲(chǔ)的有理數(shù)隨時(shí)都是最優(yōu)的。對(duì)于判斷兩個(gè)有理數(shù)是否相等,由于在對(duì)有理數(shù)進(jìn)行各種運(yùn)算后都對(duì)其進(jìn)行優(yōu)化,所以判定兩個(gè)有理數(shù)是否相等只需判定它們兩個(gè)的分子和分母分別相等即可。選做內(nèi)容重載插入(<<)和提取(>>)運(yùn)算符,使得對(duì)有理數(shù)可以直接輸入輸出。設(shè)有理數(shù)輸入格式為:整數(shù)1 整數(shù)2 /整數(shù)1為分子,整數(shù)2為分母有理數(shù)輸出格式為:分子/分母以下為代碼#include<iostream.h>#include<conio.h>#include<stdio.h>#include<iomanip.h>/us

4、ing namespace std; 刪除此處才能為類定義友元函數(shù)class rationalnumber /定義一個(gè)有理數(shù)類private:int fenmu; /有理數(shù)分母 int fenzi; /有理數(shù)分子public:rationalnumber(int a=1,int b=1); /帶默認(rèn)形參的構(gòu)造函數(shù)void setnumber(int a,int b); /設(shè)置分子分母的函數(shù)rationalnumber operator +(rationalnumber aa); /重載加法運(yùn)算符rationalnumber operator -(rationalnumber aa); /重載減

5、法運(yùn)算符rationalnumber operator *(rationalnumber aa); /重載乘法運(yùn)算符rationalnumber operator /(rationalnumber aa); /重載除法運(yùn)算符void display(); /有理數(shù)輸出函數(shù)/friend void add(rationalnumber a,rationalnumber b);friend rationalnumber& yuefen(rationalnumber& r); /將約分函數(shù)設(shè)為友元函數(shù)friend double zhuan(rationalnumber r); /將有

6、理數(shù)轉(zhuǎn)換成實(shí)數(shù)函數(shù)聲明friend istream& operator>>(istream& input,rationalnumber & r); /對(duì)輸入流符號(hào)的重載為有元函數(shù) friend ostream& operator<<(ostream& output,rationalnumber & r); /對(duì)輸出流符號(hào)的重載為友元函數(shù)/*對(duì)"<<"和">>"重載的函數(shù)形式如下:只能重載為友元函數(shù) istream & operator>>(

7、istream&,自定義類&); ostream & operator<<(ostream&,自定義類&);*/;rationalnumber:rationalnumber(int a,int b)fenzi=a;fenmu=b;void rationalnumber:setnumber(int a,int b)fenzi=a;fenmu=b;rationalnumber rationalnumber:operator +(rationalnumber aa)rationalnumber c;c.fenmu=fenmu*aa.fenmu;c.

8、fenzi=fenzi*aa.fenmu+aa.fenzi*fenmu;return c;rationalnumber rationalnumber:operator -(rationalnumber aa)rationalnumber c;c.fenmu=fenmu*aa.fenmu;c.fenzi=fenzi*aa.fenmu-aa.fenzi*fenmu;return c;rationalnumber rationalnumber:operator *(rationalnumber aa)rationalnumber c;c.fenmu=fenmu*aa.fenmu;c.fenzi=fe

9、nzi*aa.fenzi;return c;rationalnumber rationalnumber:operator /(rationalnumber aa)rationalnumber c;c.fenmu=fenmu*aa.fenzi;c.fenzi=fenzi*aa.fenmu;return c;void rationalnumber:display() /有理數(shù)輸出函數(shù)的實(shí)現(xiàn)cout<<fenzi<<"/"<<fenmu<<endl;ostream & operator<<(ostream&

10、; output,rationalnumber & r) /對(duì)輸出符號(hào)的重載實(shí)現(xiàn)if(r.fenmu<0)r.fenmu=-1*r.fenmu;output<<"-("<<r.fenzi<<"/"<<r.fenmu<<")"else if(r.fenzi<0)r.fenzi=-1*r.fenzi;output<<"-("<<r.fenzi<<"/"<<r.fenmu&l

11、t;<")"elseoutput<<"("<<r.fenzi<<"/"<<r.fenmu<<")"return output;istream & operator>>(istream& input,rationalnumber & r) /對(duì)輸入流符號(hào)的重載實(shí)現(xiàn)/cout<<"輸入分子和分母:"input>>r.fenzi>>r.fenmu;return in

12、put;double zhuan(rationalnumber r) /將有理數(shù)轉(zhuǎn)換成實(shí)數(shù)的函數(shù)實(shí)現(xiàn)return static_cast<double>(r.fenzi*1.0)/static_cast<double>(r.fenmu);rationalnumber& yuefen(rationalnumber& r) /約分函數(shù)的實(shí)現(xiàn)int a,b,temp;if(r.fenmu>r.fenzi)a=r.fenmu;b=r.fenzi;elsea=r.fenzi;b=r.fenmu;while(b!=0)temp=a%b;a=b;b=temp;r

13、.fenzi=r.fenzi/a;r.fenmu=r.fenmu/a;return r;void add()rationalnumber a;rationalnumber b;cout<<"進(jìn)行有理數(shù)的加法運(yùn)算"<<endl;cout<<"請(qǐng)輸入第一個(gè)有理數(shù):"cin>>a;cout<<"請(qǐng)輸入第二個(gè)有理數(shù):"cin>>b;cout<<yuefen(a)<<"+"<<yuefen(b)<<&quo

14、t;="<<yuefen(a+b)<<endl;void jian()rationalnumber a;rationalnumber b;cout<<"進(jìn)行有理數(shù)的減法運(yùn)算"<<endl;cout<<"請(qǐng)輸入第一個(gè)有理數(shù):"cin>>a;cout<<"請(qǐng)輸入第二個(gè)有理數(shù):"cin>>b;cout<<yuefen(a)<<"-"<<yuefen(b)<<"

15、="<<yuefen(a-b)<<endl;void cheng()rationalnumber a;rationalnumber b;cout<<"進(jìn)行有理數(shù)的乘法運(yùn)算"<<endl;cout<<"請(qǐng)輸入第一個(gè)有理數(shù):"cin>>a;cout<<"請(qǐng)輸入第二個(gè)有理數(shù):"cin>>b;cout<<yuefen(a)<<"*"<<yuefen(b)<<"=

16、"<<yuefen(a*b)<<endl;void chu()rationalnumber a;rationalnumber b;cout<<"進(jìn)行有理數(shù)的乘法運(yùn)算"<<endl;cout<<"請(qǐng)輸入第一個(gè)有理數(shù):"cin>>a;cout<<"請(qǐng)輸入第二個(gè)有理數(shù):"cin>>b;cout<<yuefen(a)<<"/"<<yuefen(b)<<"=&qu

17、ot;<<yuefen(a/b)<<endl;void menu()cout<<"-1.有理數(shù)加法運(yùn)算-"<<endl;cout<<"-2.有理數(shù)減法運(yùn)算-"<<endl;cout<<"-3.有理數(shù)乘法運(yùn)算-"<<endl;cout<<"-4.有理數(shù)除法運(yùn)算-"<<endl;cout<<"-5.退出運(yùn)算-"<<endl;char xuan()char c

18、;while(1)menu();c=getch();switch(c)case'1':add();break; case'2':jian();break; case'3':cheng();break; case'4':chu();break; case'5':;break;if(c='5')break;else;return c;int main()/system("color 0A");cout<<"以下有理數(shù)輸出形式均為(a/b)"<&l

19、t;endl;rationalnumber r1(3,5),r2(2,9),r3,r4;cout<<"r1和r2由帶參數(shù)的構(gòu)造函數(shù)創(chuàng)建"<<endl;cout<<"r1: "<<r1<<" r2: "<<r2<<endl;cout<<"r3和r4由鍵盤(pán)輸入 (請(qǐng)按任意鍵開(kāi)始從鍵盤(pán)輸入)"<<endl;getch();cout<<"請(qǐng)輸入r3: "cin>>r3;co

20、ut<<"請(qǐng)輸入r4: "cin>>r4;cout<<"r1: "<<r1<<" r2: "<<r2<<" r3: "<<yuefen(r3)<<" r4: "<<yuefen(r4)<<endl;cout<<"r1: "<<r1<<" 轉(zhuǎn)換成實(shí)數(shù)為:"<<setprecisio

21、n(2)<<zhuan(r1)<<endl;cout<<"r2: "<<r2<<" 轉(zhuǎn)換成實(shí)數(shù)為:"<<setprecision(2)<<zhuan(r2)<<endl;cout<<"r3: "<<r3<<" 轉(zhuǎn)換成實(shí)數(shù)為:"<<setprecision(2)<<zhuan(r3)<<endl;cout<<"r4: "

22、<<r4<<" 轉(zhuǎn)換成實(shí)數(shù)為:"<<setprecision(2)<<zhuan(r4)<<endl;cout<<"r1+r2: "<<yuefen(r1)<<"+"<<yuefen(r2)<<"="<<yuefen(r1+r2)<<endl;cout<<"r2-r3: "<<yuefen(r2)<<"-"<<yuefen(r3)<<"="<<yuefen(r2-r3)<<endl;cout<<"r3*r4: "<<yuefen(r3)<<"*"<<yuefen(r4)<<"="<<yuefen(r3*r4)<

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論