版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
簡(jiǎn)易計(jì)算器第十組運(yùn)算器組成運(yùn)算器數(shù)據(jù)棧存入、讀取操作數(shù)運(yùn)算符棧
存入、讀取運(yùn)算符
問(wèn)題描述通過(guò)模擬一個(gè)簡(jiǎn)單的計(jì)算器來(lái)進(jìn)行+、—、*、/、%、^(乘方)等運(yùn)算,從鍵盤(pán)上輸入一算術(shù)表達(dá)式(一般為中綴表達(dá)式),計(jì)算出表達(dá)式的值。第3
頁(yè)設(shè)計(jì)要求分析(1)可對(duì)一實(shí)數(shù)算術(shù)表達(dá)式進(jìn)行簡(jiǎn)單的數(shù)學(xué)運(yùn)算;(2)可以識(shí)別帶加減乘除等運(yùn)算符及括號(hào)的中綴表達(dá)式;(3)按照四則運(yùn)算規(guī)則,求表達(dá)式的值。一般規(guī)則如下:a.先括號(hào)內(nèi),再括號(hào)外;b.先乘方,再乘除,后加減。(4)同級(jí)運(yùn)算從左到右順序執(zhí)行;(5)如表達(dá)式有誤,應(yīng)給出相應(yīng)的提示信息。第4
頁(yè)系統(tǒng)各部分詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)一、boolstack1empty(save1s)//判斷數(shù)字棧是否為空{(diào)if(s.top==-1)return1;elsereturn0;}第5
頁(yè)系統(tǒng)各部分詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)二、boolstack2empty(save2s)//判斷運(yùn)算符棧是否為空 {if(s.top==-1)return1; elsereturn0;}第6
頁(yè)系統(tǒng)各部分詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)三、voidpush1(save1&s,doublenum)
//將數(shù)據(jù)壓入數(shù)字棧{if(s.top==MAX-1) cout<<"棧已滿"<<endl;else {s.top++; s.n[s.top]=num;}}第7
頁(yè)系統(tǒng)各部分詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)四、voidpush2(save2&s,charop) //將運(yùn)算符壓入運(yùn)算符棧{if(s.top==MAX-1)cout<<"棧已滿"<<endl;else {s.top++; s.n[s.top]=op;}}第8
頁(yè)系統(tǒng)各部分詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)五、intin(charop) //在棧內(nèi)優(yōu)先級(jí)的判斷 {switch(op) {case'+':return2;break;case'-':return2;break;case'*':return4;break;case'/':return4;break; case'(':return-1;break;default:break;}}第9
頁(yè)系統(tǒng)各部分詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)六、intout(charop) //在棧外優(yōu)先級(jí)的判斷 {switch(op) {case'+':return1;break; case'-':return1;break; case'*':return3;break; case'/':return3;break; default:break; } }第10
頁(yè)系統(tǒng)各部分詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)七、voidcount(doublea,charop,doubleb)
//進(jìn)行計(jì)算并將所得的結(jié)果壓入棧頂 {doublesum;switch(op) {case'+':sum=a+b;break; case'-':sum=a-b;break; case'*':sum=a*b;break; case'/':sum=a/b;break; default:break; } push1(stack1,sum); }第11
頁(yè)系統(tǒng)各部分詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)八、voidcal() { inti=0,j; doublea,b,c; charexpression[MAX],operate,temp[20]; cout<<"請(qǐng)輸入表達(dá)式:"; cin>>expression; stack1.top=-1數(shù);//清空字棧
stack2.top=-1;//清空運(yùn)算符棧第12
頁(yè)系統(tǒng)各部分詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)八、voidcal() while(expression[i]!='=')//以=號(hào)結(jié)尾
{if(isdigit(expression[i]))/*若讀入的字符為數(shù)字,則繼續(xù)判斷下一個(gè)字符,直到下個(gè)字符不是數(shù)字或者不是小數(shù)點(diǎn),即可保證該操作數(shù)是完整的小數(shù),然后將該數(shù)入操作數(shù)棧*/ {j=0; while(isdigit(expression[i])||expression[i]=='.') {temp[j++]=expression[i];i++;} temp[j]='\0'; c=atof(temp);//char類(lèi)型進(jìn)行轉(zhuǎn)換
push1(stack1,c);}第13
頁(yè)系統(tǒng)各部分詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)八、voidcal() else {if(expression[i]=='('){push2(stack2,expression[i]);i++;} else{if(expression[i]==')'){while(stack2.n[stack2.top]!='('){pop1(stack1,a);pop1(stack1,b); pop2(stack2,operate);count(b,operate,a);}pop2(stack2,operate); i++;}第14
頁(yè)系統(tǒng)各部分詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)八、voidcal() elseif(expression[i]=='-'||expression[i]=='+'||expression[i]=='*'||expression[i]=='/')//若讀入的字符為運(yùn)算符的情況{if(in(stack2.n[stack2.top])<out(expression[i])||stack2empty(stack2))//讀入的運(yùn)算符與運(yùn)算符棧頂元素相比,并進(jìn)行相應(yīng)的操作
{push2(stack2,expression[i]);i++;}else{pop1(stack1,a);pop1(stack1,b);pop2(stack2,operate);count(b,operate,a);}
第15
頁(yè)系統(tǒng)各部分詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)八、voidcal() while(stack2.top!=-1)//讀入結(jié)束后,繼續(xù)進(jìn)行操作,直到運(yùn)算符棧為空
{pop1(st
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 英語(yǔ)-山東省淄博市2024-2025學(xué)年第一學(xué)期高三期末摸底質(zhì)量檢測(cè)試題和答案
- 小學(xué)一年級(jí)100以內(nèi)
- 《管飼患者臨床護(hù)理》課件
- 小學(xué)數(shù)學(xué)五年級(jí)下分?jǐn)?shù)混合運(yùn)算
- 《施工視頻截圖》課件
- 《管子加工及連接》課件
- 《刑事訴訟法立案》課件
- 廣東省深圳市福田區(qū)2023-2024學(xué)年高三上學(xué)期期末考試英語(yǔ)試題
- 《滴眼藥水的護(hù)理》課件
- 游戲行業(yè)技術(shù)工作概覽
- 某kv送電線路鐵塔組立監(jiān)理細(xì)則
- 東南大學(xué)醫(yī)學(xué)三基考試外科選擇題及答案
- TZJASE 005-2021 非道路移動(dòng)柴油機(jī)械(叉車(chē))排氣煙度 檢驗(yàn)規(guī)則及方法
- GB/T 31989-2015高壓電力用戶用電安全
- CB/T 749-1997固定鋼質(zhì)百葉窗
- 大佛頂首楞嚴(yán)經(jīng)淺釋
- 品牌(商標(biāo))授權(quán)書(shū)(中英文模板)
- 行動(dòng)銷(xiāo)售(最新版)課件
- 船舶軸系與軸系布置設(shè)計(jì)課件
- 學(xué)校學(xué)生評(píng)教表
- 晚宴活動(dòng)拉斯維加斯之夜策劃方案
評(píng)論
0/150
提交評(píng)論