設萬維讀者為首頁 廣告服務 技術服務 聯繫我們 關於萬維
簡體 繁體 手機版
分類廣告
版主:
萬維讀者網 > 靈機一動 > 帖子
計算表達式解法
送交者: 田苗 2006年12月14日10:10:47 於 [靈機一動] 發送悄悄話


假定空格自動從數組中除去,數組最後一項必定是分號(;),輸入的表達不違反規則(比如操作符不能省略)。另設兩個操作數暫存器分別為a和b。可處理的表達式的例子:
3*(2+3*4+((9-4)*5))-3
(2)-3*4+((8+3))
((5+6*3-(3+2*4)))
沒有考慮優化。

一開始i=1,p,a和b為空(區別於0)。

1:如Q是左括弧'(',去2。
  如Q是右括弧')',去3。
  如Q是分號';',去4。
  如Q是操作符(+,-,*,/),去5。
  其它(必定是操作數),去6。

2:i增加1,使a,b和p為空。回1。

3:如a和b都不空,則根據操作符p,處理a和b,把結果放在Q[i-3],使Q[i-2]和Q[i-1]為空。
  否則(a必定不空),使Q[i-2]=a,使Q[i-1]和Q為空。然後使a,b和p為空,i=1,回1。

4:如a和b都不空,則根據操作符p,處理a和b,把結果放在Q[i-3],使a,b,p,Q[i-2]和
  Q[i-1]為空,i=1,回1。否則(a必定不空),a就是表達式的結果,處理結束。

5:如b為空(a必定不空),去7。否則(必定是a,b和p都不空),去8.

6:如a為空,使a=Q。否則(p必定不空),是b=Q。然後,i增加1,回1.

7:使p=Q,i增加1,回1。

8:如Q比p優先,則使a=b,p=Q,b為空,i增加1。否則,根據p值的操作符,處理a和b,
  把結果放在Q[i-3],使a,b,p,Q[i-2]和Q[i-1]為空,i=1。然後回1。

0%(0)
0%(0)
標 題 (必選項):
內 容 (選填項):
實用資訊
回國機票$360起 | 商務艙省$200 | 全球最佳航空公司出爐:海航獲五星
海外華人福利!在線看陳建斌《三叉戟》熱血歸回 豪情築夢 高清免費看 無地區限制
一周點擊熱帖 更多>>
一周回復熱帖