![實驗三算法表達式C語言實驗報告.doc_第1頁](http://file.renrendoc.com/FileRoot1/2020-1/13/b532456a-e95f-41a1-882c-1bf9eb0075f5/b532456a-e95f-41a1-882c-1bf9eb0075f51.gif)
![實驗三算法表達式C語言實驗報告.doc_第2頁](http://file.renrendoc.com/FileRoot1/2020-1/13/b532456a-e95f-41a1-882c-1bf9eb0075f5/b532456a-e95f-41a1-882c-1bf9eb0075f52.gif)
![實驗三算法表達式C語言實驗報告.doc_第3頁](http://file.renrendoc.com/FileRoot1/2020-1/13/b532456a-e95f-41a1-882c-1bf9eb0075f5/b532456a-e95f-41a1-882c-1bf9eb0075f53.gif)
![實驗三算法表達式C語言實驗報告.doc_第4頁](http://file.renrendoc.com/FileRoot1/2020-1/13/b532456a-e95f-41a1-882c-1bf9eb0075f5/b532456a-e95f-41a1-882c-1bf9eb0075f54.gif)
![實驗三算法表達式C語言實驗報告.doc_第5頁](http://file.renrendoc.com/FileRoot1/2020-1/13/b532456a-e95f-41a1-882c-1bf9eb0075f5/b532456a-e95f-41a1-882c-1bf9eb0075f55.gif)
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數據結構實驗實驗項目三棧和隊列的應用 計算機科學與技術系0902班 組 長: 雷耀陽 組 員:柴瑞東、李志鵬、張玲春 日 期:實驗報告實驗類型_綜合設計_ 實驗室 軟件實驗室1 1 實驗題目求一個數學表達式的值:用戶輸入一個包含正整數、括號和四則運算符(“+”、 “”、 “*”、 “/”)的算術表達式,計算其結果。2 需求分析首先置操作數棧為空棧,表達式起始符“#”為運算符棧底元素;依次讀入表達式中每個字符,若是操數則進操作數棧,若是操作符則和操作符棧頂的運算符進行比較優(yōu)先權后作相應的操作,直到整個表達式求值完畢(即操作符棧頂元素和當前讀入的字符均為“#”)3 概要設計結點結構類型描述如下 typedef structchar *base,*top;int stacksize;sqstack;函數關系:main()result()compute()face()op()4 詳細設計實現概要設計中定義的所有的數據類型,對每個操作給出偽碼算法。對主程序和其他模塊也都需要寫出偽碼算法。#include #include #include #include #include #define N 100 double numStackN=0; int numTop; char opStackN; int opTop; int op(char ch) if(ch=+|ch=-) return 2; if(ch=*|ch=/) return 3; if(ch=() return -1; return 0; double result(double num1,char op,double num2) if(op=+) return num1+num2; if(op=-) return num1-num2; if(op=*) return num1*num2; if(op=/) return num1/num2; return 0; int compute(char str) double num=0; int i=0,j=1,k=1; int Flag=0; numTop=opTop=0; while(stri!=0|opTop0) if(stri=0&stri0&!op(stri-1)&stri!=(&stri-1!=) numStacknumTop+=num*k; num=0; j=1; Flag=0; k=1; if(opTop=0|stri=() opStackopTop+=stri; else if(stri=) while(opTop0&opStack-opTop!=() numStacknumTop-2=result(numStacknumTop-2,opStackopTop,numStacknumTop-1); numTop-; if(opStackopTop!=() return 0; else if(stri=0&numTop=0) return 0; while(opTop0&op(stri)=0&ch=0&ch=9 ) numj+=ch; numj=0; else j=0; if(ch=S|ch=s) if(strlen(num) face(); printf(%s has been savedn,strcpy(save,num); printf(input an expression,press key E to computen); printf(%s,str); else face(); printf(there is no number to save!n); printf(input an expression,press key E to computen); printf(%s,str); if(ch=R|ch=r) if(strlen(save) face(); printf(input an expression,press key E to computen); printf(%s,strcat(str,save); i+=strlen(save); if(ch=C|ch=c) if(strlen(str) str-i=0; face(); printf(input an expression,press key E to computen); printf(%s,str); if(ch=E|ch=e) if(compute(str) printf(n=%gn,numStack0); j=0; temp=numStack0; if(temp=10) k*=10; while(k) numj+=temp2/k+0; numj=0; temp2=temp2%k; k/=10; temp=temp-(int)temp; if(temp!=0) numj+=.; numj=0; temp+=0.0000005; for(k=6;k0;k-) if(temp=0) break; temp*=10; numj+=(int)temp+0; numj=0; temp=temp-(int)temp; else face(); printf(input an expression,press key E to computen); printf(%s,str); printf(nwrong expression!); i=0; j=0; str0=0; if(ch=Q|ch=q) printf(nare you sure to quit?(Y/N)n); ch=getch(); if(ch=Y|ch=y) break; else face(); printf(input an expression,press key E to computen); printf(%s,str); ch=getch(); #include #include #include #include #include #define N 100 double numStackN=0; int numTop; char opStackN; int opTop; int op(char ch) if(ch=+|ch=-) return 2; if(ch=*|ch=/) return 3; if(ch=() return -1; return 0; double result(double num1,char op,double num2) if(op=+) return num1+num2; if(op=-) return num1-num2; if(op=*) return num1*num2; if(op=/) return num1/num2; return 0; int compute(char str) double num=0; int i=0,j=1,k=1; int Flag=0; numTop=opTop=0; while(stri!=0|opTop0) if(stri=0&stri0&!op(stri-1)&stri!=(&stri-1!=) numStacknumTop+=num*k; num=0; j=1; Flag=0; k=1; if(opTop=0|stri=() opStackopTop+=stri; else if(stri=) while(opTop0&opStack-opTop!=() numStacknumTop-2=result(numStacknumTop-2,opStackopTop,numStacknumTop-1); numTop-; if(opStackopTop!=() return 0; else if(stri=0&numTop=0) return 0; while(opTop0&op(stri)=0&ch=0&ch=9 ) numj+=ch; numj=0; else j=0; if(ch=S|ch=s) if(strlen(num) face(); printf(%s has been savedn,strcpy(save,num); printf(input an expression,press key E to computen); printf(%s,str); else face(); printf(there is no number to save!n); printf(input an expression,press key E to computen); printf(%s,str); if(ch=R|ch=r) if(strlen(save) face(); printf(input an expression,press key E to computen); printf(%s,strcat(str,save); i+=strlen(save); if(ch=C|ch=c) if(strlen(str) str-i=0; face(); printf(input an expression,press key E to computen); printf(%s,str); if(ch=E|ch=e) if(compute(str) printf(n=%gn,numStack0); j=0; temp=numStack0; if(temp=10) k*=10; while(k) numj+=temp2/k+0; numj=0; temp2=temp2%k; k/=10; temp=temp-(int)temp; if(temp!=0) numj+=.; numj=0; temp+=0.0000005; for(k=6;k0;k-) if(temp=0) break; temp*=10; numj+=(int)temp+0; numj=0; temp=temp-(int)temp; else face(); printf(input an expression,press key E to computen); printf(%s,str); printf(nwrong expression!); i=0; j=0; str0=0; if(ch=Q|ch=q) printf(nare you sure to quit?(Y/N)n); ch=getch(); if(ch=Y|ch=y) break; else face(); printf(input an expression,press key E to computen); printf(%s,str); ch=getch(); 5 調試分析1. 實驗過程中,發(fā)現錯誤后,經過看書,不斷調試后,成功。2. 菜單是借鑒別人的,拿過來經過改動后,才用到本試驗中中的。6 使用說明程序名為表達式求值.exe,運行環(huán)境為DOS。程序執(zhí)行后顯示_ Save number(S) | Read number(R) | Clear(C) | Equal(E) | Quit(Q) -input an expression,press key E to compute 請選擇操作SRCE Q選擇:在選擇不同的字母后,將實現不同功能。選擇Q:退出程序顯示:are you sure to quit?(Y/N)輸入Y,推出輸入N,回到主界面選擇C:1.清屏 2.刪除上一次輸入 選擇E:計算輸入表達式的結果并顯示結果 選擇S:保存所輸入表達式的結果 如果沒有表達式的結果,輸出:there is no number
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年B116型一氧化碳中溫變換催化劑合作協議書
- 2025年大功率電源及系統(tǒng)合作協議書
- 2025年微電子組件合作協議書
- 北京和協航電科技有限公司的射頻研發(fā)筆試題
- 2025年中班幼兒園教師年度個人工作總結(四篇)
- 2025年節(jié)能高效果汁濃縮設備合作協議書
- 2025年鄉(xiāng)村企業(yè)職工勞動合同(五篇)
- 2025年產品租賃協議樣本(2篇)
- 2025年九年級上冊數學教學工作總結模版(三篇)
- 2025年二人合伙開店協議標準版本(三篇)
- 《水電站繼電保護》課件
- 沈陽市第一屆“舒心傳技 莘紳向陽”職業(yè)技能大賽技術工作文件-27-全媒體運營師
- 2025年多彩貴州航空有限公司招聘筆試參考題庫含答案解析
- 安全生產網格員培訓
- 深圳建筑工程公司財務管理制度
- 統(tǒng)編版語文三年級下冊第三單元綜合性學習中華傳統(tǒng)節(jié)日 活動設計
- 降低順產產婦產后2小時失血率PDCA成果匯報書
- 小學數學分數四則混合運算300題帶答案
- 2024年考研(英語一)真題及參考答案
- 林下野雞養(yǎng)殖建設項目可行性研究報告
- 心肺復蘇術課件2024新版
評論
0/150
提交評論