c++分?jǐn)?shù)計(jì)算器(含源碼)

上傳人:每**** 文檔編號(hào):56556024 上傳時(shí)間:2022-02-22 格式:DOC 頁(yè)數(shù):12 大?。?02.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
c++分?jǐn)?shù)計(jì)算器(含源碼)_第1頁(yè)
第1頁(yè) / 共12頁(yè)
c++分?jǐn)?shù)計(jì)算器(含源碼)_第2頁(yè)
第2頁(yè) / 共12頁(yè)
c++分?jǐn)?shù)計(jì)算器(含源碼)_第3頁(yè)
第3頁(yè) / 共12頁(yè)

下載文檔到電腦,查找使用更方便

0 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《c++分?jǐn)?shù)計(jì)算器(含源碼)》由會(huì)員分享,可在線閱讀,更多相關(guān)《c++分?jǐn)?shù)計(jì)算器(含源碼)(12頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 一、 實(shí)驗(yàn)設(shè)計(jì)方案 1、 實(shí)驗(yàn)內(nèi)容與目的(簡(jiǎn)單介紹實(shí)驗(yàn)內(nèi)容,說明實(shí)驗(yàn)?zāi)康模? 實(shí)驗(yàn)?zāi)康模涸O(shè)計(jì)一個(gè)分?jǐn)?shù)計(jì)算器:1)實(shí)現(xiàn)輸入>>,輸出<<,+,-,*,/運(yùn)算符的重載;2)實(shí)現(xiàn)分子分母的約分與規(guī)格化。 實(shí)驗(yàn)內(nèi)容:你的具體選擇(要詳細(xì)) 實(shí)現(xiàn)分?jǐn)?shù)計(jì)算器的屏幕輸入和輸出:1)輸入采用文件(input.txt)輸入,可以有任意個(gè)二元分?jǐn)?shù)表達(dá)式,表達(dá)式之間的分隔符自定義;2)輸出到文件(output.txt) —————————————————————————————————————— 2、實(shí)驗(yàn)準(zhǔn)備工作(闡述解決問題所涉及的算法思想,至少要畫一個(gè)算法流程圖來說明) 以下為循環(huán)計(jì)算二元分

2、數(shù)計(jì)算式的流程圖: 輸入第一個(gè)分?jǐn)?shù) 輸入運(yùn)算符 輸入第二個(gè)分?jǐn)?shù) 輸入判斷符號(hào) 計(jì)算結(jié)果 保存結(jié)果到output.txt中 若為“=” 若為“;” 結(jié)束本次計(jì)算 在實(shí)驗(yàn)中還需要面對(duì)六個(gè)運(yùn)算符重載,通過運(yùn)算符重載,我們可以簡(jiǎn)單的使用分?jǐn)?shù)計(jì)算,而不需要關(guān)心它的結(jié)構(gòu),運(yùn)算符重載,我們根據(jù)基本的數(shù)學(xué)定理,將加減乘除包裝,并重載了輸入輸出運(yùn)算符,這樣,在輸入輸出時(shí)便可直接輸出用戶方便接收的格式。 —————————————————————————————————————— 推薦精選 二、實(shí)驗(yàn)步驟、測(cè)試與結(jié)果分析 1、源程序的設(shè)計(jì)(在此附上源程序(cpp文件)清單

3、) #include #include #include using namespace std; //-------------------------------創(chuàng)建分?jǐn)?shù)類------------------------------------ class Fraction { private: int nume; //分子 int deno;

4、 //分母 int Gcf(int m,int n); //輔助函數(shù),返回m和n最大公因數(shù) public: Fraction(int n=1,int d=1); virtual~Fraction(){} void Reduction(); //約分 int GetNume() const{return nume;} //返回分子 int GetDeno()

5、const{return deno;} //返回分母 void SetNume(int n); //設(shè)置分子 void SetDeno(int d); //設(shè)置分母 Fraction operator+(const Fraction &a) const; //重載加法符+ Fraction operator-(const Fraction &a) const;

6、 //重載加法符- Fraction operator*(const Fraction &a) const; //重載加法符* Fraction operator/(const Fraction &a) const; //重載加法符/ }; ostream &operator << (ostream &out,const Fraction &a); //重載輸出運(yùn)算符<< istream &operator >> (istream &in,Fraction &a); //重載輸入運(yùn)算符>> //--------------

7、-------------------最大公因數(shù)函數(shù)------------------------------ int Fraction::Gcf(int m,int n) { if(n==0) return m; //如果n=0,m為最大公因數(shù) else return Gcf(n,m%n); //否者輾轉(zhuǎn)相除 } //------------------------------------約分函數(shù)--------------------------------- 推薦精選

8、void Fraction::Reduction() { if(deno<0) //若分母小于0,將符號(hào)提前 { nume=-nume; deno=-deno; } int f=Gcf(abs(nume),deno); nume=nume/f; //實(shí)現(xiàn)約數(shù) deno=deno/f; } //----------------------------------構(gòu)造函數(shù)----------------------------------- Fraction::Fraction(int n,int d):n

9、ume(n),deno(d) { if(deno==0) cout<<"分母為0"<

10、------------- void Fraction::SetDeno(int d) { if(d==0) cout<<"分母為0"<n

11、ume*a.deno+this->deno*a.nume; //求和的分子 result.deno=this->deno*a.deno; //求和的分母 result.Reduction(); //約分 return result; //返回和 } //----------------------------------重載運(yùn)算符--------------------------------- Fraction Fraction::operator-(const Fraction &a) const 推薦精選

12、 { Fraction result; result.nume=this->nume*a.deno-this->deno*a.nume; //求差的分子 result.deno=this->deno*a.deno; //求差的分母 result.Reduction(); //約分 return result; //返回差 } //----------------------------------重載運(yùn)算符*-------------------------------- Fraction Fr

13、action::operator * (const Fraction &a) const { Fraction result; result.nume=this->nume*a.nume; //求積的分子 result.deno=this->deno*a.deno; //求積的分母 result.Reduction(); //約分 return result; //返回積 } //----------------------------------重載運(yùn)算符/----------------

14、---------------- Fraction Fraction::operator / (const Fraction &a) const { if(a.nume==0) cout<<"除數(shù)為0"<nume*a.deno; //求商的分子 result.deno=this->deno*a.nume; //求商的分母 result.Reduction(); //約分 return re

15、sult; //返回商 } //----------------------------------重載運(yùn)算符<<-------------------------------- ostream &operator << (ostream &out,const Fraction &a) { out<>

16、-------------------------------- istream &operator >> (istream &in,Fraction &a) { 推薦精選 char ch; //接收字符 int m,n; //定義分子和分母 in>>m; //輸入分子 in>>ch; //輸入/ if(ch !='/') cout<<"非法字符"<>n; //輸入分母 if(n==0) cout<<"分母為0"<

17、ndl; //如果分母為0,輸出異常 a.SetNume(m); //設(shè)置分子 a.SetDeno(n); //設(shè)置分母 a.Reduction(); //約分 return in; //返回輸入流 } int main(void) { Fraction obj1,obj2,result; //定義兩個(gè)分?jǐn)?shù)和結(jié)果 char index,ch; //定義符號(hào) ifstream infile("input.txt"

18、,ios::in); //以輸入的方式打開文件 if(!infile) //若文件打開失敗 { cout<<"打開文件input.txt失??!"<

19、-----------本次計(jì)算結(jié)果如下--------------------"<>obj1; //輸入第一個(gè)分?jǐn)?shù) infile>>index; //輸入需要執(zhí)行的操作符號(hào) infile>>obj2; //輸入第二個(gè)分?jǐn)?shù) infile>>ch; //選擇繼續(xù)或者計(jì)算結(jié)果 推薦精選 if(index=='+') result=obj1+obj2; //加法

20、 else if(index=='-') result=obj1-obj2; //減法 else if(index=='*') result=obj1*obj2; //乘法 else if(index=='/') result=obj1/obj2; //除法 else { system("PAUSE"); return 0; } cout<<"正在計(jì)算"<

21、eam outfile("output.txt",ios::app); if(!outfile) { cout<<"打開文件output.txt失敗"<

22、 //若遇到";",繼續(xù)執(zhí)行 else if(ch=='=') //若遇到"=",計(jì)算結(jié)果 { outfile<<"-------------------------謝謝使用------------------------"<

23、——————————————————————————— 2、 實(shí)驗(yàn)現(xiàn)象及結(jié)論(應(yīng)用文字和程序運(yùn)行的截圖說明程序測(cè)試現(xiàn)象,并解釋結(jié)果) input.txt 輸入截圖如下: 推薦精選 Jcsy.exe 執(zhí)行截圖如下: output.txt 輸出截圖如下: input.txt 輸入截圖如下: 推薦精選 jcsy.exe 執(zhí)行截圖如下: Output.txt 輸出截圖如下: —————————————————————————————————————— 3、 實(shí)驗(yàn)總結(jié)(是否成功解決問題,總結(jié)實(shí)驗(yàn)中最有價(jià)值的內(nèi)容,程序能夠在哪些方面進(jìn)一步

24、 推薦精選 改善,自我評(píng)價(jià)成敗得失) 試驗(yàn)中,我們按照從簡(jiǎn)單到復(fù)雜的方法,一步一個(gè)腳印編寫代碼,使得程序不易發(fā)生錯(cuò)誤,并且容易更正,編寫出來的程序代碼簡(jiǎn)潔明朗,效率較高; 通過對(duì)例題的學(xué)習(xí),我們最終將正確的代碼編寫出,并在不斷地修改之下做到方便用戶使用的要求; 編碼的速度有一個(gè)從慢到快的過程,在本次試驗(yàn)中,我們的速度依然比較慢,這看出我們平時(shí)編碼比較少,缺乏熟練度,并對(duì)算法了解不深入; 但是我們的代碼看起來仍然有些凌亂,效率還沒有帶到真正的高效,每次運(yùn)行都需要等待幾秒鐘。再以后我們將通過練習(xí)基礎(chǔ)功,簡(jiǎn)化程序代碼,實(shí)現(xiàn)簡(jiǎn)單代碼完善功能的理想。 1. 編碼要盡量使程序簡(jiǎn)單,采用最切

25、實(shí)可靠的算法,實(shí)現(xiàn)封裝,不同部分的代碼應(yīng)分工明確,最后由主函數(shù)統(tǒng)一調(diào)用; 2. 編寫完成后先自己檢查一遍代碼,然后由機(jī)器檢測(cè),找出錯(cuò)誤的根源,從不同角度思考如何解決問題; 3. 測(cè)試時(shí)應(yīng)盡可能輸入各種可能情況的數(shù)據(jù)以確保程序準(zhǔn)確無誤。 4. 應(yīng)避免任何可能的漏洞,使代碼的可用性和可靠性增強(qiáng)。 5. 試驗(yàn)中,我按照從簡(jiǎn)單到復(fù)雜的方法,一步一個(gè)腳印編寫代碼,使得程序不易發(fā)生錯(cuò)誤,并且容易更正,編寫出來的程序代碼簡(jiǎn)潔明朗,效率較高; 6. 通過對(duì)例題的學(xué)習(xí),我最終將正確的代碼編寫出,并在不斷地修改之下做到方便用戶使用的要求; 7. 編碼的速度有一個(gè)從慢到快的過程,在本次試驗(yàn)中,我的速度

26、依然比較慢,這看出我平時(shí)編碼比較少,缺乏熟練度,并對(duì)算法了解不深入; 8. 但是我的代碼看起來仍然有些凌亂,效率還沒有帶到真正的高效,每次運(yùn)行都需要等待幾秒鐘。再以后我將通過練習(xí)基礎(chǔ)功,簡(jiǎn)化程序代碼,實(shí)現(xiàn)簡(jiǎn)單代碼完善功能的理想。 本次試驗(yàn)中,我們先將書上的代碼編譯通過,通過討論,認(rèn)為書上檢查異常的方式不便于理解,于是直接采用輸出到dos窗口的方式,所以沒有使用到utility.h頭文件,同時(shí),由于我們電腦上安裝的編譯系統(tǒng)不方便對(duì).h文件進(jìn)行調(diào)試修改,所以我們采用的cpp文件,在一個(gè)cpp文件中寫下所有代碼。 推薦精選 對(duì)于txt文件輸出的格式,我們做的稍微人性化,界面簡(jiǎn)潔,容易區(qū)分 (注:可編輯下載,若有不當(dāng)之處,請(qǐng)指正,謝謝!) 推薦精選

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!