




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、題目:利用棧求表達(dá)式的值一.設(shè)計(jì)任務(wù)和目標(biāo)編寫程序?qū)崿F(xiàn)表達(dá)式求值,即驗(yàn)證某算術(shù)表達(dá)式的正確性,假設(shè)正確,那么計(jì)算該算術(shù)表達(dá)式的值。主要功能描述如下:1、 從鍵盤上輸入表達(dá)式。2、 分析該表達(dá)式是否合法:(1)是數(shù)字,那么判斷該數(shù)字的合法性。假設(shè)合法,那么壓入數(shù)據(jù)到堆棧中。(2)是規(guī)定的運(yùn)算符,那么根據(jù)規(guī)那么進(jìn)行處理。在處理過程中,將計(jì)算該表達(dá)式的值。(3)假設(shè)是其它字符,那么返回錯(cuò)誤信息。主要功能描述如下:1、 從鍵盤上輸入表達(dá)式。2、 分析該表達(dá)式是否合法:(1)是數(shù)字,那么判斷該數(shù)字的合法性。假設(shè)合法,那么壓入數(shù)據(jù)到堆棧中。(2)是規(guī)定的運(yùn)算符,那么根據(jù)規(guī)那么進(jìn)行處理。在處理過程中,將計(jì)算
2、該表達(dá)式的值。(3)假設(shè)是其它字符,那么返回錯(cuò)誤信息。程序應(yīng)包括以下幾個(gè)功能函數(shù)voidinitstack();初始化堆棧intMake_str();語法檢查并計(jì)算intpush_operate(intoperate):彳務(wù)操作碼壓入堆棧intpush_num(doublenum):將操作數(shù)壓入堆棧intprocede(intoperate):處理操作碼intchange_opnd(intoperate):將字符型操作碼轉(zhuǎn)換成優(yōu)先級(jí)intpush_opnd(intoperate):將操作碼壓入堆棧intpop_opnd();將操作碼彈出堆棧intcaculate(interru_opnd):簡(jiǎn)
3、單計(jì)算 +, -, *, /doublepop_num():彈出操作數(shù)程序如下:一#includestdio.h#includestring.h#includestdlib.h#defineMAXLEN100typedefstructcharop;intlevel;opt;typedefstruct/定義操作符棧optstMAXLEN; inttop;op_stack;typedefstruct/ 定義值棧(doubleDMAXLEN;inttop;D_stack;/-對(duì)棧操作的定義-optpeek(op_stack*s)/定義看棧頂函數(shù)opterror=;if(s-top=0)returns
4、-sts-top;elsereturnerror;intIsEmpty(op_stack*s)/定義判斷??盏暮瘮?shù)if(s-topsts-top.op;charpush(op_stack*s,optc)/ 定義入棧函數(shù)s-top+;s-sts-top=c;returnc.op;optpop(op_stack*s)/ 定義出棧函數(shù)opti;opterror=;if(s-top=0)i=s-sts-top;s-sts-top.op=0;s-top-;returni;elsereturnerror;voidclear(op_stack*s)/ 定義初始化棧s-top=-1;/- definethev
5、aluestack-doubleDpeek(D_stack*s)/ 定義看棧頂函數(shù)if(s-top=0)returns-Ds-top;elsereturn0;intDIsEmpty(D_stack*s)/定義判斷??盏暮瘮?shù)if(s-topDs-top);doubleDpush(D_stack*s,doublec)/ 定義入棧函數(shù)s-top+;s-Ds-top=c;returnc;doubleDpop(D_stack*s)/ 定義出棧函數(shù)doublei;if(s-top=0)i=s-Ds-top;s-Ds-top=0;s-top-;returni;elsereturn0;voidDclear(D
6、_stack*s)/ 定義初始化棧s-top=-1;doublecalval(char*exp)(op_stackos;/定義兩個(gè)棧D_stackds;chartmpMAXLEN=;inti=0,leng;doubledtmp,dpoptmp;optA=;optR=;optM=;optD=;optB=;optMo=;clear(&os);Dclear(&ds);/-定義初始化結(jié)束-while(*exp!=0)(while(*exp=0&*exp=0&*exp=9|*exp=.)(tmpi+=*exp+;dtmp=atof(tmp);Dpush(&ds,d
7、tmp);leng=strlen(tmp);for(i=0;ileng;i+)(tmpi=0;i=0;/-switch(*exp)(case+:if(!IsEmpty(&os)|peek(&os).level=A.level)(switch(pop(&os).op)(case%:dpoptmp=Dpop(&ds);dpoptmp=(float)(int)Dpop(&ds)%(int)dpoptmp);Dpush(&ds,dpoptmp);break;case*:dpoptmp=Dpop(&ds)*Dpop(&ds);Dpush(&
8、amp;ds,dpoptmp);break;case/:dpoptmp=Dpop(&ds);dpoptmp=Dpop(&ds)/dpoptmp;Dpush(&ds,dpoptmp);break;case+:dpoptmp=Dpop(&ds)+Dpop(&ds);Dpush(&ds,dpoptmp);break;case-:dpoptmp=Dpop(&ds);dpoptmp=Dpop(&ds)-dpoptmp;Dpush(&ds,dpoptmp);break;push(&os,A);*exp+;break;case-
9、:if(!IsEmpty(&os)|peek(&os).level=R.level)(switch(pop(&os).op)(case%:dpoptmp=Dpop(&ds);dpoptmp=(float)(int)Dpop(&ds)%(int)dpoptmp);Dpush(&ds,dpoptmp);break;case*:dpoptmp=Dpop(&ds)*Dpop(&ds);Dpush(&ds,dpoptmp);break;case/:dpoptmp=Dpop(&ds);dpoptmp=Dpop(&ds)
10、/dpoptmp;Dpush(&ds,dpoptmp);break;case+:dpoptmp=Dpop(&ds)+Dpop(&ds);Dpush(&ds,dpoptmp);break;case-:dpoptmp=Dpop(&ds);dpoptmp=Dpop(&ds)-dpoptmp;Dpush(&ds,dpoptmp);break;push(&os,R);*exp+;break;case*:if(!IsEmpty(&os)|peek(&os).level=M.level)switch(pop(&os).o
11、p)case%:dpoptmp=Dpop(&ds);dpoptmp=(float)(int)Dpop(&ds)%(int)dpoptmp);Dpush(&ds,dpoptmp);break;*:dpoptmp=Dpop(&ds)*Dpop(&ds);Dpush(&ds,dpoptmp);break;case/:dpoptmp=Dpop(&ds);dpoptmp=Dpop(&ds)/dpoptmp;Dpush(&ds,dpoptmp);break;push(&os,M);*exp+;break;case/:if(!I
12、sEmpty(&os)|peek(&os).level=D.level)switch(pop(&os).op)case%:dpoptmp=Dpop(&ds);dpoptmp=(float)(int)Dpop(&ds)%(int)dpoptmp);Dpush(&ds,dpoptmp);break;case*:dpoptmp=Dpop(&ds)*Dpop(&ds);Dpush(&ds,dpoptmp);break;case/:dpoptmp=Dpop(&ds);dpoptmp=Dpop(&ds)/dpoptmp
13、;Dpush(&ds,dpoptmp);break;push(&os,D);*exp+;break;casecase%:if(!IsEmpty(&os)|peek(&os).level=Mo.level)(switch(pop(&os).op)(case%:dpoptmp=Dpop(&ds);dpoptmp=(float)(int)Dpop(&ds)%(int)dpoptmp);Dpush(&ds,dpoptmp);break;case*:dpoptmp=Dpop(&ds)*Dpop(&ds);Dpush(&
14、;ds,dpoptmp);break;case/:dpoptmp=Dpop(&ds);dpoptmp=Dpop(&ds)/dpoptmp;Dpush(&ds,dpoptmp);break;push(&os,Mo);*exp+;break;case(:push(&os,B);exp+;break;case):while(peek(&os).level!=-2)(switch(pop(&os).op)(case%:dpoptmp=Dpop(&ds);dpoptmp=(float)(int)Dpop(&ds)%(int)dpop
15、tmp);Dpush(&ds,dpoptmp);break;*:dpoptmp=Dpop(&ds)*Dpop(&ds);Dpush(&ds,dpoptmp);break;case/:dpoptmp=Dpop(&ds);dpoptmp=Dpop(&ds)/dpoptmp;Dpush(&ds,dpoptmp);break;case+:dpoptmp=Dpop(&ds)+Dpop(&ds);Dpush(&ds,dpoptmp);break;case-:dpoptmp=Dpop(&ds);dpoptmp=Dpop(
16、&ds)-dpoptmp;Dpush(&ds,dpoptmp);break;pop(&os);/ 彈出(exp+;break;while(IsEmpty(&os)switch(pop(&os).op)case%:dpoptmp=Dpop(&ds);dpoptmp=(float)(int)Dpop(&ds)%(int)dpoptmp);Dpush(&ds,dpoptmp);break;case*:dpoptmp=Dpop(&ds)*Dpop(&ds);Dpush(&ds,dpoptmp);break;case/:dpoptmp=Dpop(&ds);dpoptmp=Dpop(&ds)/dpoptmp;Dpush(&ds,dpoptmp);break;case+:dpoptmp=Dpop(&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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è)服務(wù)合同續(xù)簽程序
- 兼職人員聘用勞務(wù)合同二零二五年
- 二零二五個(gè)人借款擔(dān)保協(xié)議
- 有關(guān)房屋轉(zhuǎn)手買賣三方合同二零二五年
- 2025深圳兼職勞動(dòng)合同(合同范本)
- 2025長(zhǎng)途司機(jī)勞動(dòng)合同
- 2025空調(diào)購(gòu)銷合同范本模板
- 2025鋼鐵廠煉鐵系統(tǒng)建設(shè)安裝工程分包合同(合同范本)
- 創(chuàng)業(yè)培訓(xùn)計(jì)劃書模板
- 2025建筑裝修清包合同辦公樓地毯、照明及室內(nèi)裝飾
- DL5190.5-2019電力建設(shè)施工技術(shù)規(guī)范第5部分:管道及系統(tǒng)
- 肩關(guān)節(jié)解剖優(yōu)質(zhì)課件
- 區(qū)慢性病綜合防控示范區(qū)績(jī)效考核評(píng)操作表
- 【課件】時(shí)代與變革-為人生而藝術(shù) 課件高中美術(shù)人美版(2019)美術(shù)鑒賞
- 液壓與氣壓傳動(dòng)完整版課件
- 建設(shè)工程施工合同(示范文本)GF-2020-0201模板
- 2013-04 FLUENT工程技術(shù)與實(shí)例分析(套裝上下冊(cè)) 周俊杰、徐國(guó)權(quán)、 張華俊 中國(guó)水利水電出版社
- 慢性阻塞性肺病.ppt
- 采礦試題題庫(kù)
- 大連市歷年居民收入及職工工資統(tǒng)計(jì)數(shù)據(jù)
- 厭氧氨氧化ppt
評(píng)論
0/150
提交評(píng)論