![中綴表達(dá)式求值實(shí)驗(yàn)報(bào)告_第1頁](http://file4.renrendoc.com/view/67f4ebdb73b245d9389b3d0039569a5a/67f4ebdb73b245d9389b3d0039569a5a1.gif)
![中綴表達(dá)式求值實(shí)驗(yàn)報(bào)告_第2頁](http://file4.renrendoc.com/view/67f4ebdb73b245d9389b3d0039569a5a/67f4ebdb73b245d9389b3d0039569a5a2.gif)
![中綴表達(dá)式求值實(shí)驗(yàn)報(bào)告_第3頁](http://file4.renrendoc.com/view/67f4ebdb73b245d9389b3d0039569a5a/67f4ebdb73b245d9389b3d0039569a5a3.gif)
![中綴表達(dá)式求值實(shí)驗(yàn)報(bào)告_第4頁](http://file4.renrendoc.com/view/67f4ebdb73b245d9389b3d0039569a5a/67f4ebdb73b245d9389b3d0039569a5a4.gif)
![中綴表達(dá)式求值實(shí)驗(yàn)報(bào)告_第5頁](http://file4.renrendoc.com/view/67f4ebdb73b245d9389b3d0039569a5a/67f4ebdb73b245d9389b3d0039569a5a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)中綴表達(dá)式求值實(shí)驗(yàn)報(bào)告一、需求分析(要實(shí)現(xiàn)的功能描述)1問題描述:在計(jì)算機(jī)中,算術(shù)表達(dá)式由常量、變量、運(yùn)算符和括號(hào)組成。由于不同的運(yùn)算符具有不同的優(yōu)先級(jí),又要考慮括號(hào),因此,算術(shù)表達(dá)式的求值不可能嚴(yán)格地從左到右進(jìn)行。因而在程序設(shè)計(jì)時(shí),借助棧實(shí)現(xiàn)。2實(shí)現(xiàn)功能:算法輸入:一個(gè)算術(shù)表達(dá)式,由常量、變量、運(yùn)算符和括號(hào)組成(以字符串形式輸入)。為簡(jiǎn)化,規(guī)定操作數(shù)只能為正整數(shù),操作符為“+、-、*、/”。算法運(yùn)行:將輸入的中綴表達(dá)式改為后綴表達(dá)式,并進(jìn)行運(yùn)算。算法輸出:輸出后綴表達(dá)
2、式和表達(dá)式運(yùn)算結(jié)果。3測(cè)試數(shù)據(jù):(1)、1+3*4-(5/5); 一位數(shù)運(yùn)算(2)、45-5*(1+2)/5; 多位數(shù)運(yùn)算二、概要設(shè)計(jì)整個(gè)程序包含功能模塊及模塊間的調(diào)用關(guān)系(1)、struct node 創(chuàng)建結(jié)構(gòu)體,被主函數(shù)調(diào)用(2)、struct node *Initialization() 創(chuàng)建棧鏈,被主函數(shù)調(diào)用(3)、struct node *assort(struct node *s) 將中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式并存在s2中被主函數(shù)調(diào)用(4)、struct node *calcolate(struct node *s) 求出表達(dá)式的值,被主函數(shù)調(diào)用(5)、void main() 主函
3、數(shù),調(diào)用所有函數(shù)三、詳細(xì)設(shè)計(jì)抽象數(shù)據(jù)類型中定義的各種操作算法實(shí)現(xiàn)(用N-S圖描述)開始輸入中綴表達(dá)式將中綴表達(dá)式轉(zhuǎn)換成后綴表達(dá)式并存入s2中輸出后綴表達(dá)式計(jì)算結(jié)果輸出結(jié)果結(jié)束四、調(diào)試分析1程序在調(diào)式過程中出現(xiàn)的問題及解決方法 一開始選用直接運(yùn)算方式運(yùn)用兩個(gè)棧來存放數(shù)字和操作符,后來寫著確實(shí)不行然后直接轉(zhuǎn)用轉(zhuǎn)為后綴表達(dá)式再進(jìn)行計(jì)算。 在寫將多位數(shù)(比如123*12)存放字符串中時(shí),一開始我想著直接轉(zhuǎn)換成數(shù)字存入數(shù)組中,但一直不成功,只能將第一個(gè)多位數(shù)轉(zhuǎn)換成功;后來在和同學(xué)之間交流并且百度搜索后改為直接存入字符串中,再存入字符串過程中,我發(fā)現(xiàn)幾個(gè)數(shù)字之間可能沒法區(qū)分是前一個(gè)數(shù)字的還是后一個(gè)數(shù)字的,
4、于是我在掃描字符串過程中在掃描到操作字符時(shí)將存入數(shù)字的那個(gè)字符串s2空出一位,用以區(qū)分前后兩個(gè)數(shù)字,如12+45*,如果直接存入字符串中會(huì)是 s2:1245*+;但加空格后為s2:12(空格)45*+;這樣后面運(yùn)算時(shí)就好區(qū)分兩多位數(shù)字。 2心得體會(huì) 在寫程序之前要選擇適合自己的算法即自己熟悉的能編出的算法,這樣后續(xù)的編程會(huì)簡(jiǎn)便多了。 對(duì)于一個(gè)要實(shí)現(xiàn)的功能,會(huì)有很多不同的算法,當(dāng)你一個(gè)算法用不了時(shí),可以換一個(gè)算法編程,目的是死的,人是活的,算法是活的,程序也是活的!五、用戶手冊(cè)該軟件的操作方法簡(jiǎn)介輸入一個(gè)算術(shù)表達(dá)式,由常量、變量、運(yùn)算符和括號(hào)組成(以字符串形式輸入)。為簡(jiǎn)化,規(guī)定操作數(shù)只能為正整
5、數(shù),操作符為“+、-、*、/”,按回車結(jié)束輸入。程序運(yùn)行輸出輸出后綴表達(dá)式和表達(dá)式運(yùn)算結(jié)果。六、測(cè)試結(jié)果根據(jù)已提供的測(cè)試數(shù)據(jù)得到什么樣的結(jié)果(可以截屏)(1)、1+3*4-(5/5);(2)、45-5*(1+2)/5;七、程序清單#include#include#include#include#define MAX 60#define RIGHT 1#define WRONG 0#define DEMAX 15#define NULL 0char s1MAX;char s2MAX;int j=0;struct node /定義結(jié)構(gòu)體。 char data; int num; struct no
6、de *next;struct node *Initialization()/初始化棧鏈,鏈棧不帶頭結(jié)點(diǎn) struct node *top; top=(struct node *)malloc(sizeof(struct node); top-data=; top-num=0; top-next=NULL; return top;struct node *assort(struct node *s)/輸入字符串 struct node *p,*top; int i; top=s; int m; char a; m=strlen(s1); for(i=0; i=m; i+) a=s1i; if(
7、0=s1i&s1idata=a; p-next=top; top=p; break; case *: case /: s2j= ; j+; if(top-data=*)|(top-data=/) s2j=top-data; j+; /比其高,現(xiàn)將棧頂運(yùn)算符出棧,再進(jìn)棧。 top-data=a; break; else p=(struct node *)malloc(sizeof(struct node);/否,直接進(jìn)棧 p-data=a; p-next=top; top=p; break; case +: case -: s2j= ; j+; if(top-data=+|top-data=-|
8、top-data=*|top-data=/) s2j=top-data; j+; top-data=a; break; else p=(struct node *)malloc(sizeof(struct node); p-data=a; p-next=top; top=p; break; case ): s2j= ; j+; if(top-data=;) printf(input error); break; while(top-data!=() s2j=top-data; j+; p=top; top=top-next; free(p); p=top; top=top-next; free
9、(p); break; while(top-data!=;) s2j=top-data; j+; p=top; top=top-next; free(p); s2j=; printf(后綴表達(dá)式為:); for(i=0; ij; i+) if(s2i!= ) printf(%c ,s2i); printf(n ); return top;struct node *calcolate(struct node *s)/計(jì)算表達(dá)式的值 struct node *top,*p; char *q; int x,y,a; int i,n; top=s;/指向棧頂?shù)闹羔?for(i=0; i=0&s2i=0
10、&s2nnum=a; p-next=top; top=p; i=n-1; else if(s2i=;) /遇;號(hào)結(jié)束標(biāo)志,輸出棧中的最后計(jì)算結(jié)果 printf(計(jì)算結(jié)果為:%dn,top-num); else if(s2i= ) else y=top-num; p=top; top=top-next; free(p); x=top-num; p=top; top=top-next; free(p); switch(s2i) case +: a=x+y; p=(struct node *)malloc(sizeof(struct node); p-num=a; p-next=top; top=p; break; case -: a=x-y; p=(struct node *)malloc(sizeof(struct node ); p-num=a; p-next=top; top=p; break; case *: a=x*y; p=(struct node *)malloc(sizeof(struct node ); p-num=a; p-next=top; top=p; break; case /: a=(float)x/y; p=(struct node *)malloc(sizeof(struct node ); p-num=a; p-ne
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度主題餐廳特色菜品開發(fā)與經(jīng)營(yíng)合同
- 2025年度電網(wǎng)設(shè)備安裝與調(diào)試服務(wù)合同
- 2025年度新能源電池研發(fā)與生產(chǎn)合作合同范本
- 2025年度紡織品-國(guó)際貿(mào)易合同范本
- 2025年度供用熱力合同能源管理實(shí)施合同
- 2025年度城市綠化農(nóng)民工勞務(wù)合同書
- 2025年度化妝品出口退稅代理服務(wù)合同
- 2025年度文化產(chǎn)業(yè)合同擔(dān)保方式創(chuàng)新與實(shí)踐
- 2025年度新型水處理設(shè)備租賃合作合同范本
- 2025年度市政道路防水修復(fù)合同范本
- 《建筑與市政工程防水規(guī)范》解讀
- 審計(jì)合同終止協(xié)議書(2篇)
- 2024年重慶市中考數(shù)學(xué)試題B卷含答案
- 腰椎間盤突出癥護(hù)理查房
- 醫(yī)生給病人免責(zé)協(xié)議書(2篇)
- 外購?fù)鈪f(xié)管理制度
- 人教版(2024年新教材)七年級(jí)上冊(cè)英語Unit 7 Happy Birthday 單元整體教學(xué)設(shè)計(jì)(5課時(shí))
- 2024變電站無人機(jī)巡檢系統(tǒng)規(guī)范第1部分:技術(shù)規(guī)范
- 機(jī)動(dòng)車商業(yè)保險(xiǎn)條款(2020版)
- 《大小比較》(說課課件)二年級(jí)下冊(cè)數(shù)學(xué)西師大版
- 張五常子女和婚姻合約中的產(chǎn)權(quán)執(zhí)行問題
評(píng)論
0/150
提交評(píng)論