




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、用兩種方式實(shí)現(xiàn)表達(dá)式自動(dòng)計(jì)算用兩種方式實(shí)現(xiàn)表達(dá)式自動(dòng)計(jì)算- #-邊轉(zhuǎn)換邊計(jì)算的運(yùn)行結(jié)果圖和判錯(cuò)圖:faiizbijiexePleaseEntertheExp12x(45/9-31+9x3Theresultis24000000_圖6邊轉(zhuǎn)換邊計(jì)算運(yùn)行結(jié)果圖圖7邊轉(zhuǎn)換邊計(jì)算錯(cuò)誤字符圖五、遇到的問(wèn)題及解決這部分我主要遇到了如下兩個(gè)問(wèn)題,其內(nèi)容與解決方法如下所列:第一個(gè)問(wèn)題是中綴轉(zhuǎn)后綴時(shí)的數(shù)字元素整合問(wèn)題解決辦法:一開(kāi)始一直在糾結(jié)于如何在中綴轉(zhuǎn)后綴時(shí)把數(shù)字元素整合后和運(yùn)算符一起放入后綴表達(dá)式中,因?yàn)檎虾蟮臄?shù)是浮點(diǎn)型,而運(yùn)算符是字符型。首先想到的解決辦法是建立兩個(gè)數(shù)組,一個(gè)是浮點(diǎn)型數(shù)組用來(lái)存儲(chǔ)整合后的數(shù)
2、,一個(gè)是字符型的數(shù)組用來(lái)存儲(chǔ)運(yùn)算符。兩個(gè)數(shù)組使用同一個(gè)索引。當(dāng)遇到數(shù)的時(shí)候進(jìn)數(shù)組,符組讀入空格;當(dāng)遇到的是運(yùn)算符的時(shí)候進(jìn)符組,數(shù)組讀入空格。當(dāng)輸出后綴表達(dá)式的時(shí)候,索引依次掃描,當(dāng)在數(shù)組或符組中遇到的是元素時(shí)輸出,當(dāng)時(shí)空格時(shí)輸出后轉(zhuǎn)到另一個(gè)組索引。部分程序如下:num20,char20;/*num存儲(chǔ)了整合數(shù),char存儲(chǔ)了字符,一下為輸出后綴操作*/while(i!=0)if(numi!=)printf(%f,numi);i+;elsei+;if(chari!=)printf(%f,numi);i+;elsei+;但是方法過(guò)于繁瑣,程序過(guò)于冗長(zhǎng),后來(lái)通過(guò)多次分析發(fā)現(xiàn)如果在轉(zhuǎn)換的時(shí)候不整合數(shù)字
3、就可以使用一個(gè)字符型數(shù)組進(jìn)行存儲(chǔ)后綴表達(dá)式,并且輸出的時(shí)候也簡(jiǎn)單了些。只需要在后綴運(yùn)算的時(shí)候整合就可以了。以下為最后修改的將中綴中的數(shù)存入后綴表達(dá)式的程序:if(exp1index1=0&exp1index1=0&exp1index1=9)|exp1index1=.)exp2index2=exp1index1;index2+;index1+;exp2index2=;index2+;第二個(gè)問(wèn)題是擔(dān)心左右括號(hào)不匹配的問(wèn)題解決辦法:一開(kāi)始加了一個(gè)函數(shù)首先計(jì)算輸入的表達(dá)式的左右括號(hào)個(gè)數(shù),如下:intmatch(char*exp)inti=0,j=0,k=0;while(expi!=0)if(expi=
4、()j+;if(expi=)k+;return(j=k);雖然可以判定左右括號(hào)個(gè)數(shù)不同的錯(cuò)誤,但是當(dāng)遇到類似“1+2*)3+4(”這種個(gè)數(shù)相同但是先右后左的問(wèn)題就不行了。后來(lái)通過(guò)對(duì)程序的分析發(fā)現(xiàn),只要在出棧判空處提示錯(cuò)誤就可以解決右括號(hào)提前或者比左括號(hào)多的問(wèn)題。比如先出現(xiàn)右括號(hào)或者右括號(hào)比左括號(hào)多的時(shí)候,根據(jù)程序,遇到右括號(hào)則符棧出棧直到左括號(hào),但是由于遇到右括號(hào)時(shí)前面的左括號(hào)個(gè)數(shù)不夠,就會(huì)導(dǎo)致符棧最后??粘鰲#簿涂梢耘卸ㄥe(cuò)誤。而對(duì)于左括號(hào)而言,如果匹配的話,那么在表達(dá)式掃描結(jié)束前就會(huì)處理完括號(hào)。所以可以在表達(dá)式掃描結(jié)束后的對(duì)棧中剩余元素的處理處解決。先把左括號(hào)的優(yōu)先級(jí)設(shè)為-1,而最后出棧運(yùn)
5、算時(shí)先判斷優(yōu)先級(jí),當(dāng)為-1時(shí)報(bào)錯(cuò)就可以了。同時(shí)基于以上發(fā)現(xiàn),又增加了數(shù)棧出棧判空?qǐng)?bào)錯(cuò),所以就可以對(duì)類似“1*+-3”這種運(yùn)算符相鄰時(shí)的錯(cuò)誤進(jìn)行報(bào)錯(cuò)。由于有很多出口,就定義了一個(gè)報(bào)錯(cuò)函數(shù)方便調(diào)用,如下:intError()printf(Error!);getch();exit(1);六、心得體會(huì)通過(guò)對(duì)本次程序的學(xué)習(xí)和編寫,了解了關(guān)于電腦對(duì)計(jì)算表達(dá)式的計(jì)算過(guò)程,并且學(xué)會(huì)了從中綴變成后綴的方法。在本次編寫的時(shí)候遇到了不少問(wèn)題和麻煩,通過(guò)對(duì)C語(yǔ)言的復(fù)習(xí)和對(duì)算法的分析,最終也一一解決。也是這次的編寫讓我更加認(rèn)識(shí)到算法的重要性和算法的趣味性,特別是中綴轉(zhuǎn)后綴如直接計(jì)算的差別體現(xiàn)了算法的發(fā)展歷程和一個(gè)好的算法對(duì)于程序的關(guān)鍵性。通過(guò)本次編寫也意識(shí)到了清晰的程序結(jié)構(gòu)對(duì)于以后的更新和更改都有很重要的意義,方便的利用函數(shù)體來(lái)定義一些算法比直接在主函數(shù)中設(shè)置算法要好的多。更關(guān)鍵的是了解到了棧的性質(zhì)和用途,一些適當(dāng)?shù)膯?wèn)題使用棧不僅僅可以迎刃而解,有時(shí)還能夠起到事倍功半的效
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中生社會(huì)實(shí)踐能力的多元化發(fā)展與評(píng)價(jià)考核試卷
- 保健食品營(yíng)養(yǎng)需求分析與滿足策略實(shí)施效果考核試卷
- 合成氣制合成油考核試卷
- 國(guó)際貿(mào)易信用證條款解析與應(yīng)用考核試卷
- 網(wǎng)購(gòu)家具合同范本
- 簡(jiǎn)單的工傷合同范本
- 賣車簡(jiǎn)單合同范本
- 農(nóng)業(yè)訂單合同范本
- 電視購(gòu)物產(chǎn)品退換政策協(xié)議
- 瑜伽培訓(xùn)合同協(xié)議書
- 特殊作業(yè)現(xiàn)場(chǎng)監(jiān)護(hù)人安全培訓(xùn)課件
- 《會(huì)計(jì)發(fā)展史》課件
- 無(wú)人駕駛系統(tǒng)與智能車輛應(yīng)用技術(shù)實(shí)訓(xùn)教程
- 幼兒同伴關(guān)系對(duì)幼兒社會(huì)性發(fā)展的研究開(kāi)題報(bào)告
- 學(xué)校食堂膳食營(yíng)養(yǎng)培訓(xùn)課件
- 環(huán)境修復(fù)原理與技術(shù)-第5章-污染環(huán)境的植物修復(fù)原理
- 2024年1月浙江省首考普通高等學(xué)校招生全國(guó)統(tǒng)一考試英語(yǔ)試題
- 手術(shù)部位感染預(yù)防控制措施
- 安檢、保安服務(wù) 投標(biāo)方案(技術(shù)方案)
- 腰椎管狹窄癥臨床路徑
- 中醫(yī)類診所規(guī)章制度與崗位職責(zé)
評(píng)論
0/150
提交評(píng)論