




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
/實(shí)驗(yàn)設(shè)計(jì)方案實(shí)驗(yàn)內(nèi)容與目的〔簡(jiǎn)單介紹實(shí)驗(yàn)內(nèi)容.說(shuō)明實(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)備工作〔闡述解決問(wèn)題所涉及的算法思想.至少要畫(huà)一個(gè)算法流程圖來(lái)說(shuō)明以下為循環(huán)計(jì)算二元分?jǐn)?shù)計(jì)算式的流程圖:輸入第一個(gè)分?jǐn)?shù)輸入第一個(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)算符重載.通過(guò)運(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文件清單#include<iostream>#include<fstream>#include<cmath>usingnamespacestd;//創(chuàng)建分?jǐn)?shù)類classFraction{private: intnume;//分子 intdeno;//分母 intGcf<intm,intn>;//輔助函數(shù).返回m和n最大公因數(shù)public: Fraction<intn=1,intd=1>; virtual~Fraction<>{} voidReduction<>;//約分 intGetNume<>const{returnnume;}//返回分子 intGetDeno<>const{returndeno;}//返回分母 voidSetNume<intn>;//設(shè)置分子 voidSetDeno<intd>;//設(shè)置分母 Fractionoperator+<constFraction&a>const;//重載加法符+ Fractionoperator-<constFraction&a>const;//重載加法符- Fractionoperator*<constFraction&a>const; //重載加法符* Fractionoperator/<constFraction&a>const; //重載加法符/};ostream&operator<<<ostream&out,constFraction&a>;//重載輸出運(yùn)算符<<istream&operator>><istream&in,Fraction&a>;//重載輸入運(yùn)算符>>//最大公因數(shù)函數(shù)intFraction::Gcf<intm,intn>{ if<n==0>returnm;//如果n=0.m為最大公因數(shù) elsereturnGcf<n,m%n>; //否者輾轉(zhuǎn)相除}//約分函數(shù)voidFraction::Reduction<>{ if<deno<0> //若分母小于0.將符號(hào)提前 { nume=-nume; deno=-deno; } intf=Gcf<abs<nume>,deno>; nume=nume/f; //實(shí)現(xiàn)約數(shù) deno=deno/f;}//構(gòu)造函數(shù)Fraction::Fraction<intn,intd>:nume<n>,deno<d> { if<deno==0>cout<<"分母為0"<<endl; //查出異常 Reduction<>; //約分}//設(shè)置分母函數(shù)voidFraction::SetNume<intn>{ nume=n; Reduction<>;}//設(shè)置分子函數(shù)voidFraction::SetDeno<intd>{ if<d==0>cout<<"分母為0"<<endl; //查出異常 deno=d; Reduction<>;}//重載運(yùn)算符+FractionFraction::operator+<constFraction&a>const{ Fractionresult; result.nume=this->nume*a.deno+this->deno*a.nume; //求和的分子 result.deno=this->deno*a.deno; //求和的分母 result.Reduction<>; //約分 returnresult; //返回和}//重載運(yùn)算符FractionFraction::operator-<constFraction&a>const{ Fractionresult; result.nume=this->nume*a.deno-this->deno*a.nume; //求差的分子 result.deno=this->deno*a.deno; //求差的分母 result.Reduction<>; //約分 returnresult; //返回差}//重載運(yùn)算符*FractionFraction::operator*<constFraction&a>const{ Fractionresult; result.nume=this->nume*a.nume; //求積的分子 result.deno=this->deno*a.deno; //求積的分母 result.Reduction<>; //約分 returnresult; //返回積}//重載運(yùn)算符/FractionFraction::operator/<constFraction&a>const{ if<a.nume==0>cout<<"除數(shù)為0"<<endl; //如果除數(shù)為0.輸出異常 Fractionresult; result.nume=this->nume*a.deno; //求商的分子 result.deno=this->deno*a.nume; //求商的分母 result.Reduction<>; //約分 returnresult; //返回商}//重載運(yùn)算符<<ostream&operator<<<ostream&out,constFraction&a>{ out<<a.GetNume<><<"/"<<a.GetDeno<>; //按一定格式輸出分?jǐn)?shù) returnout; //返回輸出流} //重載運(yùn)算符>>istream&operator>><istream&in,Fraction&a>{ charch; //接收字符 intm,n; //定義分子和分母 in>>m; //輸入分子 in>>ch; //輸入/ if<ch!='/'>cout<<"非法字符"<<endl; in>>n; //輸入分母 if<n==0>cout<<"分母為0"<<endl; //如果分母為0.輸出異常 a.SetNume<m>; //設(shè)置分子 a.SetDeno<n>; //設(shè)置分母 a.Reduction<>; //約分 returnin; //返回輸入流}intmain<void>{ Fractionobj1,obj2,result; //定義兩個(gè)分?jǐn)?shù)和結(jié)果 charindex,ch; //定義符號(hào) ifstreaminfile<"input.txt",ios::in>; //以輸入的方式打開(kāi)文件 if<!infile> //若文件打開(kāi)失敗 { cout<<"打開(kāi)文件input.txt失??!"<<endl; exit<1>; } ofstreamoutfile<"output.txt",ios::app>; //以輸出的方式打開(kāi)文件 if<!outfile> //若文件打開(kāi)失敗 { cout<<"打開(kāi)文件output.txt失敗"<<endl; exit<1>; } outfile<<"本次計(jì)算結(jié)果如下"<<endl; for<;;> //無(wú)限次循環(huán)直到求解完成 { infile>>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; //加法 elseif<index=='-'>result=obj1-obj2; //減法 elseif<index=='*'>result=obj1*obj2; //乘法 elseif<index=='/'>result=obj1/obj2; //除法 else { system<"PAUSE">; return0; } cout<<"正在計(jì)算"<<obj1<<""<<index<<""<<obj2<<"..."<<endl;; ofstreamoutfile<"output.txt",ios::app>; if<!outfile> { cout<<"打開(kāi)文件output.txt失敗"<<endl; exit<1>; } outfile<<obj1<<""<<index<<""<<obj2<<""<<"="<<""<<result<<endl; //輸出結(jié)果到output.txt cout<<"計(jì)算完成.結(jié)果保存在output.txt中"<<endl<<endl; if<ch==';'>continue; //若遇到";".繼續(xù)執(zhí)行 elseif<ch=='='> //若遇到"=".計(jì)算結(jié)果 { outfile<<"謝謝使用"<<endl<<endl; break;} outfile.close<>; //文件輸出流關(guān)閉 } infile.close<>; //文件輸出流關(guān)閉 system<"PAUSE">; return0;}——————————————————————————————————————實(shí)驗(yàn)現(xiàn)象及結(jié)論〔應(yīng)用文字和程序運(yùn)行的截圖說(shuō)明程序測(cè)試現(xiàn)象.并解釋結(jié)果input.txt輸入截圖如下:Jcsy.exe執(zhí)行截圖如下:output.txt輸出截圖如下:input.txt輸入截圖如下:jcsy.exe執(zhí)行截圖如下:Output.txt輸出截圖如下:——————————————————————————————————————實(shí)驗(yàn)總結(jié)〔是否成功解決問(wèn)題.總結(jié)實(shí)驗(yàn)中最有價(jià)值的內(nèi)容.程序能夠在哪些方面進(jìn)一步改善.自我評(píng)價(jià)成敗得失試驗(yàn)中.我們按照從簡(jiǎn)單到復(fù)雜的方法.一步一個(gè)腳印編寫代碼.使得程序不易發(fā)生錯(cuò)誤.并且容易更正.編寫出來(lái)的程序代碼簡(jiǎn)潔明朗.效率較高;通過(guò)對(duì)例題的學(xué)習(xí).我們最終將正確的代碼編寫出.并在不斷地修改之下做到方便用戶使用的要求;編碼的速度有一個(gè)從慢到快的過(guò)程.在本次試驗(yàn)中.我們的速度依然比較慢.這看出我們平時(shí)編碼比較少.缺乏熟練度.并對(duì)算法了解不深入;但是我們的代碼看起來(lái)仍然有些凌亂.效率還沒(méi)有帶到真正
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于設(shè)計(jì)思維模型的初中人工智能課程設(shè)計(jì)與實(shí)施
- 眾包合作合同范例
- 業(yè)務(wù)居間協(xié)議合同范例
- 剪輯實(shí)習(xí)合同范例
- 買白芨苗合同范例
- 兼職崗位勞動(dòng)合同范例
- 產(chǎn)品眾籌合同范例
- 關(guān)于公司代理合同范例
- 1996聘用合同范例
- 主體建筑施工合同范例
- 2025年安徽電氣工程職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)學(xué)生專用
- 2025年皖西衛(wèi)生職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)審定版
- unctad -全球投資趨勢(shì)監(jiān)測(cè) 第 48 期 Global Investment Trends Monitor,No. 48
- 2025年福建省高職單招計(jì)算機(jī)類職業(yè)技能測(cè)試題及答案(供參考)
- 電鍍園區(qū)現(xiàn)場(chǎng)管理
- 七年級(jí)歷史下冊(cè) 第一單元 綜合測(cè)試卷(人教福建版 2025年春)
- 學(xué)校在鑄牢中華民族共同體意識(shí)教育工作情況報(bào)告
- 2025年安徽淮北市建投控股集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 《孤獨(dú)的小螃蟹》導(dǎo)讀課件
- 城市軌道交通行車組織 課件 項(xiàng)目3 車站行車作業(yè)組織
- GA/T 2145-2024法庭科學(xué)涉火案件物證檢驗(yàn)實(shí)驗(yàn)室建設(shè)技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論