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

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

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

0 積分

下載資源

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

資源描述:

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

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

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

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,將符號提前 { nume=-nume; deno=-deno; } int f=Gcf(abs(nume),deno); nume=nume/f; //實現(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; //返回和 } //----------------------------------重載運算符--------------------------------- 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; //返回差 } //----------------------------------重載運算符*-------------------------------- 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; //返回積 } //----------------------------------重載運算符/----------------

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; //返回商 } //----------------------------------重載運算符<<-------------------------------- 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; //定義兩個分?jǐn)?shù)和結(jié)果 char index,ch; //定義符號 ifstream infile("input.txt"

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

19、-----------本次計算結(jié)果如下--------------------"<>obj1; //輸入第一個分?jǐn)?shù) infile>>index; //輸入需要執(zhí)行的操作符號 infile>>obj2; //輸入第二個分?jǐn)?shù) infile>>ch; //選擇繼續(xù)或者計算結(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<<"正在計算"<

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

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

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

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

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

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

展開閱讀全文
溫馨提示:
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)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

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

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

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


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