版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計報告</b></p><p> 課程設(shè)計題目:有理數(shù)運算</p><p><b> 學(xué)生姓名: </b></p><p> 專 業(yè):軟件工程</p><p><b> 班 級: </b></p><
2、p><b> 學(xué) 號: </b></p><p><b> 指導(dǎo)教師: </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++中,并沒有預(yù)先定義有理數(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> 重載插入(<<)和提?。?gt;>)運算符,使得對有理數(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è)計的基本方法和編程技巧,鞏固所學(xué)理論知識,使理論與實際相結(jié)合。從而提高自我分析問題、解決問題
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 有理數(shù)運算c課程設(shè)計報告
- 有理數(shù)運算
- c++課程設(shè)計報告--猜數(shù)游戲
- 有理數(shù)的運算
- 有理數(shù)運算(10.4)
- 數(shù)據(jù)結(jié)構(gòu)----集合運算課程設(shè)計報告(c++)
- 有理數(shù)混合運算習(xí)題
- 有理數(shù)的運算技巧
- 有理數(shù)的混合運算
- 有理數(shù)加減混合運算
- 有理數(shù)的綜合運算
- 有理數(shù)混合運算教案
- 有理數(shù)的加減運算
- 有理數(shù)運算的復(fù)習(xí)
- 有理數(shù)加減混合運算
- 有理數(shù)加減混合運算
- 有理數(shù)加減混合運算教學(xué)設(shè)計
- c++課程設(shè)計報告
- 有理數(shù)運算練習(xí)題
- (口訣)有理數(shù)地加法運算
評論
0/150
提交評論