2023年逆波蘭式分析實驗報告_第1頁
2023年逆波蘭式分析實驗報告_第2頁
2023年逆波蘭式分析實驗報告_第3頁
2023年逆波蘭式分析實驗報告_第4頁
2023年逆波蘭式分析實驗報告_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

rJ姓名:孫巖學(xué)號:班級:惠普開發(fā)142學(xué)校:青島科技大學(xué)Mail:電話:教師:宮生文實驗報告:實驗名稱:逆波蘭式分析實驗?zāi)康暮鸵?guī)定將非后綴式用來表達的算術(shù)表達式轉(zhuǎn)換為用逆波蘭式來表達的算術(shù)表達式,并計算用逆波蘭式來表達的算術(shù)表達式的值。實驗內(nèi)容和環(huán)節(jié):一、實驗內(nèi)容對于這個實驗,總共用了三個函數(shù),即主函數(shù)、算術(shù)表達式轉(zhuǎn)換為后綴表達式函數(shù)、根據(jù)后綴表達式求取表達式的計算值。重要完畢的功能是接受一個包含加減乘除以及括號的算數(shù)表達式,進而將其轉(zhuǎn)換為后綴表達式,從而通過此后綴表達式求出該算數(shù)表達式的值。二、實驗環(huán)節(jié)1、基于實驗的內(nèi)容,構(gòu)造程序所需的模塊2、根據(jù)已建構(gòu)的模塊,寫出各個模塊的相應(yīng)程序代碼3、在主函數(shù)中調(diào)用模塊來完畢所要得到的效果在本程序中,一方面定義了數(shù)組常量ex[max],用于存儲后綴表達式,操作對象在前,運算符在后;另一方面,是trans()函數(shù),它的作用是將算數(shù)表達式轉(zhuǎn)換為后綴表達式;另一方面是compvalue。函數(shù),它的作用是根據(jù)后綴表達式求取相應(yīng)算數(shù)表達式的算數(shù)值;最后是主函數(shù)模塊,重要是通過對以上幾個模塊的調(diào)用。實驗代碼如下:include<stdio.h>inelude<math.h>inc1ude<std1ib.h>#definemax100charex[max];/*存儲后綴表達式*/VOidtrans(){/*將算術(shù)表達式轉(zhuǎn)化為后綴表達式*/charstr[max];/*存儲原算術(shù)表達式*/,charscack[max];/*作為棧使用*/?charch;intsum,i,j,t,toP=0;printf("火火***************************************替”);叩rimf(”*輸入一個求值的表達式,以#結(jié)束。*\n");printf(H******木****木*木*****木*****木*********木****木*\n")?printf("算數(shù)表達式:");i=0;i=0;i=0;/*獲取用戶輸入的表達式*/i=0;do{“++;。scanf("%cM,&str[i]);}while(str[ij!='#'&&i!=max);sum=i;t=l;i=l;ch=str[i];i++;while(ch!='#,){。switch(ch){-case1(':/*鑒定為左括號*/top++;s(ack[top]=ch;。break;case':/*鑒定為右括號*/owhile(stack[toP]!=z('){exlt]=stack|top];top-;t++;240p一;break;case/*鑒定為加減號次/acasewhi1e(top!=0&&stack[topj!=7('){gex[t]=stack[top];top-;t++;O0}wtop++;stack[top]=ch;"break;ocase'管/*鑒定為乘除號*/case'/hile(stack[top]==,*'||stack[top]=='/'){38cx[t]=stack[top];top-;t++;a}。top++;stack[top]=ch;abreak;case'^break;gdcfault:while(ch>=,0'&&ch<='9O{/*鑒定為數(shù)字文/aoex[t]=ch;t++;a。ch=str[i];i++;a)。i--;oex[t]=z#';t++;a}8ch=str[i];i++;?while(top!=0){。ex[t]=stack[top];t++;top--;}ex[t]=z#":oPrintf("\n\t本來表達式:");?for(j=1;jvsum;j++)Printf("%c'\str[j]);printf("\n\t后綴表達式:",ex);for(j=l;j<t;j++)gprinlf("%c",ex[j]);}voidcompva1ue(){/*計算后綴表達式的值*/floatstack[max],d;/*作為棧使用*/?charch;?intt=1,top=0;/%為ex下標(biāo),top為stack下標(biāo)*/ch=ex[t];l++;while(ch!='#'){aswitch(ch){。case'。stack[top-1]=stack[top-1]+stack[top];。?topgbreak;caseg。stack[top-1]=stack[top-1]-stack[top];Otop;break;case'*':。。stack[top—l]=stack[top-l]*stack[top];a。lop;abreak;case7':if(stack[topj!=0)。stack[top-l]=stack[lop-1]/stackftop];。e1se(???11田"\11\1除零錯誤!\11");。exit(0);/*異常退出*/。)top--;break;odefault:,d=0;awhi1e(ch>='0/&&ch<='9'){。d=l0*d4-ch-'O';/*將數(shù)字字符轉(zhuǎn)化為相應(yīng)的數(shù)值*/gch=ex[t];(++;。}gtop++;stack[top]=d;)ch=ex[t];t++;?printf(H\n\t計算結(jié)果:%g\n",stack[top]);intmain(){4rans():ocompvalue();return0;三、實驗過程記錄:實驗截圖:抽入一個求值的表達式,以。結(jié)束。*算數(shù)表達式:3*2+7*原來表達式:3W7后綴表達式:3tt2#*?tt+訐算結(jié)果"3Pressanykeytocontinue.程序中出現(xiàn)的問題1、程序中的數(shù)組使用與平常使用的不太同樣,即對數(shù)組的存取都是從下標(biāo)為1的地方開始。四、實驗總結(jié):通過這次實踐,我重要有幾個方面的收獲:.對語法制導(dǎo)翻譯原理有了進一步的理解。.對逆波蘭式的翻

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論