網路城邦
上一篇 回創作列表 下一篇   字體:
邏輯比較 與 四則計算 前置表示法 不使用堆疊處理輸出
2022/09/07 14:16:25瀏覽77|回應0|推薦0

預先處理一: 先將運算式文字 (個符號之間必須以空格分開) 轉換成一個符號的串列,若遇到括號則建成包括運算子 ( + - * / ^次方 大於 小於 不等於 等等)與運算元 (數字或變數) 子串列

例如 A * (B + C)

變成

 A * ()

        | 

        B + C

預先處理二

算數運算子符號的階級 (從高到低 )

 ^

* 或 /

+ 或 -

邏輯運算子的符號階級 (從高到低)

邏輯比較 (大於 小於)

邏輯運算 (且 或 互斥或 and or )

正處理:

從串列開頭處理每個符號,直到沒有未處理的符號

  若該符號是 "() " 則用本程序進入遞迴處理 括號內的內容,並將處理結果依序加入輸出串列中

  若該符號是 "^" 將該符號 加入 輸出串列的倒數第二個位置

  若該符號是  "邏輯運算子" 將該符號 加入 到輸出串列的最前面位置

  若該符號是 "邏輯比較運算子"(例如:大於 小於 相等 不等) 從輸出串列最尾端向前尋找出最靠近的連續運算子群 "階級"  低於c或等於 自己的"運算子" 在該位置上 加入輸出串列

  若該符號是 "+" 或 "-" 從輸出串列的最前面開始比較運算元

    若沒有任何運算元存在 把自己加入輸出串列的最前面位置

    若該符號的階級大於輸出串列目前位置的運算子

       改成從輸出串列最後位置向前尋早運算元,並移動到相接續運算子的最前端然後加入

  若該符號是 "*" 或 "/"

    從輸出符號最尾端尋找連續運算子群,到運算群的最前端位置,

      若該位置運算子的階級高於或等於自己的符號, 在該位置加入自己

      若該位置運算子的階級小於自記,則將自己加入輸出串列的倒數第二個位置

      若找不到任何運算子,也是將自己加入輸出串列的倒數第二個位置

  若以上皆非 (表示自己是運算元)

    將自己加入到輸出串列的尾端

    

( 知識學習科學百科 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=wisejet&aid=177046326