版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計報告</b></p><p> 課程設(shè)計題目:有理數(shù)運算</p><p><b> 學生姓名: </b></p><p> 專 業(yè):軟件工程</p><p><b> 班 級: </b></p><
2、p><b> 學 號: </b></p><p><b> 指導教師: </b></p><p> 2013年06月20日</p><p><b> 1. 有理數(shù)運算</b></p><p><b> 問題描述</b></p&g
3、t;<p> 有理數(shù)是一個可以化為一個分數(shù)的數(shù),例如2/3,533/920,-12/49都是有理數(shù),而就為無理數(shù)。在C++中,并沒有預先定義有理數(shù),需要時可以定義一個有理數(shù)類,將有理數(shù)的分子和分母分別存放在兩個整型變量中。對有理數(shù)的各種操作都可以用重載運算符來實現(xiàn)。</p><p><b> 基本要求</b></p><p> 定義并實現(xiàn)一個有理數(shù)
4、類,通過重載運算符+、-、*、/對有理數(shù)進行算術(shù)運算,通過重載運算符==實現(xiàn)判定兩個有理數(shù)是否相等。寫一個優(yōu)化函數(shù),它的作用是使有理數(shù)約去公分母,也即是使保存的有理數(shù)分子和分母之間沒有公約數(shù)(除去1以外)。此外,還要定義一個將有理數(shù)轉(zhuǎn)換為實數(shù)的函數(shù),再加上構(gòu)造函數(shù)和有理數(shù)輸出函數(shù)。</p><p><b> 測試數(shù)據(jù)</b></p><p> 在應(yīng)用程序中,創(chuàng)建若
5、干有理數(shù)對象,通過帶參數(shù)的構(gòu)造函數(shù)使得各有理數(shù)對象值各不相同,然后分別進行各類運算,輸出運算結(jié)果,檢驗其正確性。</p><p><b> 實現(xiàn)提示</b></p><p> 設(shè)有兩個有理數(shù)a/b和c/d,則有:</p><p> 有理數(shù)相加 分子=a*d+b*c;分母=b*d</p><p> 有理數(shù)相減
6、分子=a*d-b*c;分母=b*d</p><p> 有理數(shù)相乘 分子=a*c; 分母=b*d</p><p> 有理數(shù)相除 分子=a*d; 分母=b*c</p><p> 優(yōu)化函數(shù)在創(chuàng)建有理數(shù)對象時應(yīng)執(zhí)行,在執(zhí)行其它各種運算之后也需執(zhí)行它,這樣可保證所存儲的有理數(shù)隨時都是最優(yōu)的。對于判斷兩個有理數(shù)是否相等,由于在對有理數(shù)進行各種運算后都對其進
7、行優(yōu)化,所以判定兩個有理數(shù)是否相等只需判定它們兩個的分子和分母分別相等即可。</p><p><b> 選做內(nèi)容</b></p><p> 重載插入(<<)和提取(>>)運算符,使得對有理數(shù)可以直接輸入輸出。設(shè)有理數(shù)輸入格式為:</p><p> 整數(shù)1 整數(shù)2 //整數(shù)1為分子,整數(shù)2為分母</p
8、><p><b> 有理數(shù)輸出格式為:</b></p><p><b> 分子/分母</b></p><p><b> 以下為代碼</b></p><p> #include<iostream.h></p><p> #include&
9、lt;conio.h></p><p> #include<stdio.h></p><p> #include<iomanip.h></p><p> //using namespace std; 刪除此處才能為類定義友元函數(shù)</p><p> class rationalnumber //定義一個
10、有理數(shù)類</p><p><b> {</b></p><p><b> private:</b></p><p> int fenmu; //有理數(shù)分母</p><p> int fenzi; //有理數(shù)分子</p><p><b> public:
11、</b></p><p> rationalnumber(int a=1,int b=1); //帶默認形參的構(gòu)造函數(shù)</p><p> void setnumber(int a,int b); //設(shè)置分子分母的函數(shù)</p><p> rationalnumber operator +(rationalnumber aa); //重載加法運
12、算符</p><p> rationalnumber operator -(rationalnumber aa); //重載減法運算符</p><p> rationalnumber operator *(rationalnumber aa); //重載乘法運算符</p><p> rationalnumber operator /(rationalnum
13、ber aa); //重載除法運算符</p><p> void display(); //有理數(shù)輸出函數(shù)</p><p> //friend void add(rationalnumber a,rationalnumber b);</p><p> friend rationalnumber& yuefen(rationalnumber&
14、; r); //將約分函數(shù)設(shè)為友元函數(shù)</p><p> friend double zhuan(rationalnumber r); //將有理數(shù)轉(zhuǎn)換成實數(shù)函數(shù)聲明</p><p> friend istream& operator>>(istream& input,rationalnumber & r); //對輸入流符號的重載為有元函數(shù)<
15、/p><p> friend ostream& operator<<(ostream& output,rationalnumber & r); //對輸出流符號的重載為友元函數(shù)</p><p> /*對"<<"和">>"重載的函數(shù)形式如下:只能重載為友元函數(shù)</p><
16、p> istream & operator>>(istream&,自定義類&);</p><p> ostream & operator<<(ostream&,自定義類&);*/</p><p><b> };</b></p><p> rationalnum
17、ber::rationalnumber(int a,int b)</p><p><b> {</b></p><p><b> fenzi=a;</b></p><p><b> fenmu=b;</b></p><p><b> }</b>&
18、lt;/p><p> void rationalnumber::setnumber(int a,int b)</p><p><b> {</b></p><p><b> fenzi=a;</b></p><p><b> fenmu=b;</b></p>
19、<p><b> }</b></p><p> rationalnumber rationalnumber::operator +(rationalnumber aa)</p><p><b> {</b></p><p> rationalnumber c;</p><p>
20、 c.fenmu=fenmu*aa.fenmu;</p><p> c.fenzi=fenzi*aa.fenmu+aa.fenzi*fenmu;</p><p><b> return c;</b></p><p><b> }</b></p><p> rationalnumber rat
21、ionalnumber::operator -(rationalnumber aa)</p><p><b> {</b></p><p> rationalnumber c;</p><p> c.fenmu=fenmu*aa.fenmu;</p><p> c.fenzi=fenzi*aa.fenmu-aa.
22、fenzi*fenmu;</p><p><b> return c;</b></p><p><b> }</b></p><p> rationalnumber rationalnumber::operator *(rationalnumber aa)</p><p><b>
23、 {</b></p><p> rationalnumber c;</p><p> c.fenmu=fenmu*aa.fenmu;</p><p> c.fenzi=fenzi*aa.fenzi;</p><p><b> return c;</b></p><p><
24、b> }</b></p><p> rationalnumber rationalnumber::operator /(rationalnumber aa)</p><p><b> {</b></p><p> rationalnumber c;</p><p> c.fenmu=fenmu
25、*aa.fenzi;</p><p> c.fenzi=fenzi*aa.fenmu;</p><p><b> return c;</b></p><p><b> }</b></p><p> void rationalnumber::display() //有理數(shù)輸出函數(shù)的實現(xiàn)&l
26、t;/p><p><b> {</b></p><p> cout<<fenzi<<"/"<<fenmu<<endl;</p><p><b> }</b></p><p> ostream & operator<
27、<(ostream& output,rationalnumber & r) //對輸出符號的重載實現(xiàn)</p><p><b> {</b></p><p> if(r.fenmu<0)</p><p><b> {</b></p><p> r.fenmu=-1*
28、r.fenmu;</p><p> output<<"-("<<r.fenzi<<"/"<<r.fenmu<<")";</p><p><b> }</b></p><p> else if(r.fenzi<0)&
29、lt;/p><p><b> {</b></p><p> r.fenzi=-1*r.fenzi;</p><p> output<<"-("<<r.fenzi<<"/"<<r.fenmu<<")";</p>
30、<p><b> }</b></p><p><b> else</b></p><p> output<<"("<<r.fenzi<<"/"<<r.fenmu<<")";</p>&l
31、t;p> return output;</p><p><b> }</b></p><p> istream & operator>>(istream& input,rationalnumber & r) //對輸入流符號的重載實現(xiàn)</p><p><b> {</b>&
32、lt;/p><p> //cout<<"輸入分子和分母:";</p><p> input>>r.fenzi>>r.fenmu;</p><p> return input;</p><p><b> }</b></p><p> d
33、ouble zhuan(rationalnumber r) //將有理數(shù)轉(zhuǎn)換成實數(shù)的函數(shù)實現(xiàn)</p><p><b> {</b></p><p> return static_cast<double>(r.fenzi*1.0)/static_cast<double>(r.fenmu);</p><p><b&
34、gt; }</b></p><p> rationalnumber& yuefen(rationalnumber& r) //約分函數(shù)的實現(xiàn)</p><p><b> {</b></p><p> int a,b,temp;</p><p> if(r.fenmu>r.fen
35、zi)</p><p><b> {</b></p><p> a=r.fenmu;</p><p> b=r.fenzi;</p><p><b> }</b></p><p><b> else</b></p><p&g
36、t;<b> {</b></p><p> a=r.fenzi;</p><p> b=r.fenmu;</p><p><b> }</b></p><p> while(b!=0)</p><p><b> {</b></p>
37、<p><b> temp=a%b;</b></p><p><b> a=b;</b></p><p><b> b=temp;</b></p><p><b> }</b></p><p> r.fenzi=r.fenzi/a;
38、</p><p> r.fenmu=r.fenmu/a;</p><p><b> return r;</b></p><p><b> }</b></p><p> void add()</p><p><b> {</b></p>
39、;<p> rationalnumber a;</p><p> rationalnumber b;</p><p> cout<<"進行有理數(shù)的加法運算"<<endl;</p><p> cout<<"請輸入第一個有理數(shù):";</p><p>
40、<b> cin>>a;</b></p><p> cout<<"請輸入第二個有理數(shù):";</p><p><b> cin>>b;</b></p><p> cout<<yuefen(a)<<"+"<<
41、yuefen(b)<<"="<<yuefen(a+b)<<endl;</p><p><b> }</b></p><p> void jian()</p><p><b> {</b></p><p> rationalnumber
42、a;</p><p> rationalnumber b;</p><p> cout<<"進行有理數(shù)的減法運算"<<endl;</p><p> cout<<"請輸入第一個有理數(shù):";</p><p><b> cin>>a;</
43、b></p><p> cout<<"請輸入第二個有理數(shù):";</p><p><b> cin>>b;</b></p><p> cout<<yuefen(a)<<"-"<<yuefen(b)<<"="
44、;<<yuefen(a-b)<<endl;</p><p><b> }</b></p><p> void cheng()</p><p><b> {</b></p><p> rationalnumber a;</p><p> rat
45、ionalnumber b;</p><p> cout<<"進行有理數(shù)的乘法運算"<<endl;</p><p> cout<<"請輸入第一個有理數(shù):";</p><p><b> cin>>a;</b></p><p>
46、cout<<"請輸入第二個有理數(shù):";</p><p><b> cin>>b;</b></p><p> cout<<yuefen(a)<<"*"<<yuefen(b)<<"="<<yuefen(a*b)<<
47、endl;</p><p><b> }</b></p><p> void chu()</p><p><b> {</b></p><p> rationalnumber a;</p><p> rationalnumber b;</p><
48、p> cout<<"進行有理數(shù)的乘法運算"<<endl;</p><p> cout<<"請輸入第一個有理數(shù):";</p><p><b> cin>>a;</b></p><p> cout<<"請輸入第二個有理數(shù):&q
49、uot;;</p><p><b> cin>>b;</b></p><p> cout<<yuefen(a)<<"/"<<yuefen(b)<<"="<<yuefen(a/b)<<endl;</p><p><
50、b> }</b></p><p> void menu()</p><p><b> {</b></p><p> cout<<"--------1.有理數(shù)加法運算--------"<<endl;</p><p> cout<<"
51、;--------2.有理數(shù)減法運算--------"<<endl;</p><p> cout<<"--------3.有理數(shù)乘法運算--------"<<endl;</p><p> cout<<"--------4.有理數(shù)除法運算--------"<<endl;&
52、lt;/p><p> cout<<"--------5.退出運算--------------"<<endl;</p><p><b> }</b></p><p> char xuan()</p><p><b> {</b></p>
53、<p><b> char c;</b></p><p><b> while(1)</b></p><p><b> {</b></p><p><b> menu();</b></p><p> c=getch();</p&g
54、t;<p><b> switch(c)</b></p><p><b> {</b></p><p> case'1':add();break;</p><p> case'2':jian();break;</p><p> case
55、9;3':cheng();break;</p><p> case'4':chu();break;</p><p> case'5':;break;</p><p><b> }</b></p><p> if(c=='5')</p><
56、;p><b> break;</b></p><p><b> else</b></p><p><b> ;</b></p><p><b> }</b></p><p><b> return c;</b><
57、/p><p><b> }</b></p><p> int main()</p><p><b> {</b></p><p> //system("color 0A");</p><p> cout<<"以下有理數(shù)輸出形式
58、均為(a/b)"<<endl;</p><p> rationalnumber r1(3,5),r2(2,9),r3,r4;</p><p> cout<<"r1和r2由帶參數(shù)的構(gòu)造函數(shù)創(chuàng)建"<<endl;</p><p> cout<<"r1: "<<
59、;r1<<" r2: "<<r2<<endl;</p><p> cout<<"r3和r4由鍵盤輸入 (請按任意鍵開始從鍵盤輸入)"<<endl;</p><p><b> getch();</b></p><p> cout&l
60、t;<"請輸入r3: ";</p><p><b> cin>>r3;</b></p><p> cout<<"請輸入r4: ";</p><p><b> cin>>r4;</b></p><p> co
61、ut<<"r1: "<<r1<<" r2: "<<r2<<" r3: "<<yuefen(r3)<<" r4: "<<yuefen(r4)<<endl;</p><p> cout<<"r1: &q
62、uot;<<r1<<" 轉(zhuǎn)換成實數(shù)為:"<<setprecision(2)<<zhuan(r1)<<endl;</p><p> cout<<"r2: "<<r2<<" 轉(zhuǎn)換成實數(shù)為:"<<setprecisi
63、on(2)<<zhuan(r2)<<endl;</p><p> cout<<"r3: "<<r3<<" 轉(zhuǎn)換成實數(shù)為:"<<setprecision(2)<<zhuan(r3)<<endl;</p><p> cout<<
64、;"r4: "<<r4<<" 轉(zhuǎn)換成實數(shù)為:"<<setprecision(2)<<zhuan(r4)<<endl;</p><p> cout<<"r1+r2: "<<yuefen(r1)<<"+"<<yu
65、efen(r2)<<"="<<yuefen(r1+r2)<<endl;</p><p> cout<<"r2-r3: "<<yuefen(r2)<<"-"<<yuefen(r3)<<"="<<yuefen(r2-r3)<
66、<endl;</p><p> cout<<"r3*r4: "<<yuefen(r3)<<"*"<<yuefen(r4)<<"="<<yuefen(r3*r4)<<endl;</p><p> cout<<"r2/r
67、4: "<<yuefen(r2)<<"/"<<yuefen(r4)<<"="<<yuefen(r2/r4)<<endl;</p><p> cout<<"你想做有理數(shù)的簡單運算嗎?(y/n)"<<endl;</p><p>
68、<b> char c;</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> c=getch();</p><p> if(c=='y')</p><p><
69、b> {</b></p><p><b> c=xuan();</b></p><p> if(c=='5')</p><p><b> break;</b></p><p><b> }</b></p><p&g
70、t; else if(c=='n')</p><p><b> {</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> else</b></p>&
71、lt;p><b> ;</b></p><p><b> }</b></p><p> cout<<"已經(jīng)退出運算,按任意鍵退出程序"<<endl;</p><p><b> getch();</b></p><p>
72、 //system("cls");</p><p> cout<<"成功退出!"<<endl;</p><p><b> return 0;</b></p><p><b> }</b></p><p><b>
73、運行界面如下:</b></p><p> 按任意鍵后出現(xiàn)以下界面:</p><p><b> 輸入r3的值:</b></p><p> 這時你可以選擇y或n進行選擇,但注意必須是小寫。若輸入的為y:</p><p> 選擇不同的數(shù)字依次會出現(xiàn)以下界面:</p><p><
74、b> 若輸入的為n:</b></p><p><b> 實驗總結(jié):</b></p><p> 通過此次C++的課程設(shè)計,我熟練掌握了面向?qū)ο蟪绦蛘Z言中的很多功能的實現(xiàn),并且熟悉了很多調(diào)試程序的方法,懂得了處理錯誤的方法。進一步掌握面向過程和面向?qū)ο蟪绦蛟O(shè)計的基本方法和編程技巧,鞏固所學理論知識,使理論與實際相結(jié)合。從而提高自我分析問題、解決問題
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 有理數(shù)運算c課程設(shè)計報告
- 有理數(shù)運算
- c++課程設(shè)計報告--猜數(shù)游戲
- 有理數(shù)的運算
- 有理數(shù)運算(10.4)
- 數(shù)據(jù)結(jié)構(gòu)----集合運算課程設(shè)計報告(c++)
- 有理數(shù)混合運算習題
- 有理數(shù)的運算技巧
- 有理數(shù)的混合運算
- 有理數(shù)加減混合運算
- 有理數(shù)的綜合運算
- 有理數(shù)混合運算教案
- 有理數(shù)的加減運算
- 有理數(shù)運算的復習
- 有理數(shù)加減混合運算
- 有理數(shù)加減混合運算
- 有理數(shù)加減混合運算教學設(shè)計
- c++課程設(shè)計報告
- 有理數(shù)運算練習題
- (口訣)有理數(shù)地加法運算
評論
0/150
提交評論