2006年08月5日
[資結]作業三思考方式
作者: drumrick () 看板: P_Lashai
標題: Re: 第三次作業的參考資料
時間: Fri Aug 4 12:22:35 2006
那個是以後上課要教的東西
由於作業裡面已經規定*/^不會連續出現
所以不用做到前中後續轉換
打個比方
1 + 2 + 3 * 4 - 5 * 4 + 6
我需要一個四格陣列 . . . .
讀四個data 1.+.2.+. 由於加法的優先權一樣
直接算1+2=3 把資料往前移 3.+. . .
再讀兩個 3.+.3.*. 由於乘法優先權大於加法
讀下一個data(4)跟 3 做乘法 以後再跟 3 做加法 15. . . .
這裡說明一下為什麼可以直接做兩個運算
就是因為確定下一個operator一定不會再比加法的優先權高 所以可以安心
說明的有點亂七八糟的
總結
陣列裡只會出現兩個operator有三總情況
高低 -- 只能做前半,因為後面可能還有高優先權 ex:3*5-2*2
低低 -- 只能做前半,因為後面可能還有高優先權 ex:4-2+3*5
以上兩個做完要把陣列往前移阿
低高 -- 可以把兩個部份的計算都完成 ex:4-3*5+8
不過要記得多得一個data,因為這時候陣列還沒有↑這個5
這是一個可怕的演算法
寫出來不是要便宜大家做作業
而是要讓大家去想一想 因為我不知道有沒有bug阿~~
歡迎大家實作看看 順便挑bug
引用URL
http://cgi.blog.roodo.com/trackback/1976239