版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、.課程設(shè)計報告課程設(shè)計題目:有理數(shù)運算 學生姓名:馮紹文 專 業(yè):軟件工程班 級:1221815學 號:201220181502指導教師:許志文 2013年06月20日東華理工大學1. 有理數(shù)運算問題描述有理數(shù)是一個可以化為一個分數(shù)的數(shù),例如2/3,533/920,-12/49都是有理數(shù),而就為無理數(shù)。在C+中,并沒有預(yù)先定義有理數(shù),需要時可以定義一個有理數(shù)類,將有理數(shù)的分子和分母分別存放在兩個整型變量中。對有理數(shù)的各種操作都可以用重載運算符來實現(xiàn)?;疽蠖x并實現(xiàn)一個有理數(shù)類,通過重載運算符+、-、*、/對有理數(shù)進行算術(shù)運算,通過重載運算符=實現(xiàn)判定兩個有理數(shù)是否相等。寫一個優(yōu)化函數(shù),它的
2、作用是使有理數(shù)約去公分母,也即是使保存的有理數(shù)分子和分母之間沒有公約數(shù)(除去1以外)。此外,還要定義一個將有理數(shù)轉(zhuǎn)換為實數(shù)的函數(shù),再加上構(gòu)造函數(shù)和有理數(shù)輸出函數(shù)。測試數(shù)據(jù)在應(yīng)用程序中,創(chuàng)建若干有理數(shù)對象,通過帶參數(shù)的構(gòu)造函數(shù)使得各有理數(shù)對象值各不相同,然后分別進行各類運算,輸出運算結(jié)果,檢驗其正確性。實現(xiàn)提示設(shè)有兩個有理數(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ù)對象時應(yīng)執(zhí)行,在執(zhí)行其它各種運
3、算之后也需執(zhí)行它,這樣可保證所存儲的有理數(shù)隨時都是最優(yōu)的。對于判斷兩個有理數(shù)是否相等,由于在對有理數(shù)進行各種運算后都對其進行優(yōu)化,所以判定兩個有理數(shù)是否相等只需判定它們兩個的分子和分母分別相等即可。選做內(nèi)容重載插入(<<)和提取(>>)運算符,使得對有理數(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 /定義一個有理數(shù)類private:int fenmu; /有理數(shù)分母 int fenzi; /有理數(shù)分子public:rationalnumber(int a=1,int b=1); /帶默認形參的構(gòu)造函數(shù)void setnumber(int a,int b); /設(shè)置分子分母的函數(shù)rationalnumber operator +(rationalnumber aa); /重載加法運算符rationalnumber operator -(rationalnumber aa); /重載減
5、法運算符rationalnumber operator *(rationalnumber aa); /重載乘法運算符rationalnumber operator /(rationalnumber aa); /重載除法運算符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ù)聲明friend istream& operator>>(istream& input,rationalnumber & r); /對輸入流符號的重載為有元函數(shù) friend ostream& operator<<(ostream& output,rationalnumber & r); /對輸出流符號的重載為友元函數(shù)/*對"<<"和">>"重載的函數(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ù)的實現(xiàn)cout<<fenzi<<"/"<<fenmu<<endl;ostream & operator<<(ostream&
10、; output,rationalnumber & r) /對輸出符號的重載實現(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) /對輸入流符號的重載實現(xiàn)/cout<<"輸入分子和分母:"input>>r.fenzi>>r.fenmu;return in
12、put;double zhuan(rationalnumber r) /將有理數(shù)轉(zhuǎn)換成實數(shù)的函數(shù)實現(xiàn)return static_cast<double>(r.fenzi*1.0)/static_cast<double>(r.fenmu);rationalnumber& yuefen(rationalnumber& r) /約分函數(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<<"進行有理數(shù)的加法運算"<<endl;cout<<"請輸入第一個有理數(shù):"cin>>a;cout<<"請輸入第二個有理數(shù):"cin>>b;cout<<yuefen(a)<<"+"<<yuefen(b)<<&quo
14、t;="<<yuefen(a+b)<<endl;void jian()rationalnumber a;rationalnumber b;cout<<"進行有理數(shù)的減法運算"<<endl;cout<<"請輸入第一個有理數(shù):"cin>>a;cout<<"請輸入第二個有理數(shù):"cin>>b;cout<<yuefen(a)<<"-"<<yuefen(b)<<"
15、="<<yuefen(a-b)<<endl;void cheng()rationalnumber a;rationalnumber b;cout<<"進行有理數(shù)的乘法運算"<<endl;cout<<"請輸入第一個有理數(shù):"cin>>a;cout<<"請輸入第二個有理數(shù):"cin>>b;cout<<yuefen(a)<<"*"<<yuefen(b)<<"=
16、"<<yuefen(a*b)<<endl;void chu()rationalnumber a;rationalnumber b;cout<<"進行有理數(shù)的乘法運算"<<endl;cout<<"請輸入第一個有理數(shù):"cin>>a;cout<<"請輸入第二個有理數(shù):"cin>>b;cout<<yuefen(a)<<"/"<<yuefen(b)<<"=&qu
17、ot;<<yuefen(a/b)<<endl;void menu()cout<<"-1.有理數(shù)加法運算-"<<endl;cout<<"-2.有理數(shù)減法運算-"<<endl;cout<<"-3.有理數(shù)乘法運算-"<<endl;cout<<"-4.有理數(shù)除法運算-"<<endl;cout<<"-5.退出運算-"<<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由鍵盤輸入 (請按任意鍵開始從鍵盤輸入)"<<endl;getch();cout<<"請輸入r3: "cin>>r3;co
20、ut<<"請輸入r4: "cin>>r4;cout<<"r1: "<<r1<<" r2: "<<r2<<" r3: "<<yuefen(r3)<<" r4: "<<yuefen(r4)<<endl;cout<<"r1: "<<r1<<" 轉(zhuǎn)換成實數(shù)為:"<<setprecisio
21、n(2)<<zhuan(r1)<<endl;cout<<"r2: "<<r2<<" 轉(zhuǎn)換成實數(shù)為:"<<setprecision(2)<<zhuan(r2)<<endl;cout<<"r3: "<<r3<<" 轉(zhuǎn)換成實數(shù)為:"<<setprecision(2)<<zhuan(r3)<<endl;cout<<"r4: "
22、<<r4<<" 轉(zhuǎn)換成實數(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度夾板產(chǎn)品線上線下銷售合作協(xié)議4篇
- 二零二五年度民爆工程項目安全教育培訓合同4篇
- 2025年度抖音平臺內(nèi)容創(chuàng)作者收益分成合同3篇
- 2025年度草原生態(tài)環(huán)境損害賠償與修復(fù)合同3篇
- 2025版高速公路橋梁錨桿錨鎖維護保養(yǎng)工程合同4篇
- 個人獨資企業(yè)清算協(xié)議書(2024版)
- 二零二五苗木種植基地建設(shè)與管理承包合同4篇
- 二零二五年度杭州房屋租賃市場租賃合同修改與補充服務(wù)協(xié)議3篇
- 生物安全實驗室建設(shè)與改造策略
- 教育科技對學生德業(yè)教育與心理健康的雙重影響
- 2025年安慶港華燃氣限公司招聘工作人員14人高頻重點提升(共500題)附帶答案詳解
- 人教版(2025新版)七年級下冊數(shù)學第七章 相交線與平行線 單元測試卷(含答案)
- GB/T 44351-2024退化林修復(fù)技術(shù)規(guī)程
- 從跨文化交際的角度解析中西方酒文化(合集5篇)xiexiebang.com
- 中藥飲片培訓課件
- 醫(yī)院護理培訓課件:《早產(chǎn)兒姿勢管理與擺位》
- 空氣自動站儀器運營維護項目操作說明以及簡單故障處理
- 2022年12月Python-一級等級考試真題(附答案-解析)
- T-CHSA 020-2023 上頜骨缺損手術(shù)功能修復(fù)重建的專家共識
- Hypermesh lsdyna轉(zhuǎn)動副連接課件完整版
- 小學六年級數(shù)學計算題100道(含答案)
評論
0/150
提交評論