字體:小 中 大 | |
|
|
2022/09/07 14:16:25瀏覽77|回應0|推薦0 | |
預先處理一: 先將運算式文字 (個符號之間必須以空格分開) 轉換成一個符號的串列,若遇到括號則建成包括運算子 ( + - * / ^次方 大於 小於 不等於 等等)與運算元 (數字或變數) 子串列 例如 A * (B + C) 變成 A * () | B + C 預先處理二 算數運算子符號的階級 (從高到低 ) ^ * 或 / + 或 - 邏輯運算子的符號階級 (從高到低) 邏輯比較 (大於 小於) 邏輯運算 (且 或 互斥或 and or ) 正處理: 從串列開頭處理每個符號,直到沒有未處理的符號 若該符號是 "() " 則用本程序進入遞迴處理 括號內的內容,並將處理結果依序加入輸出串列中 若該符號是 "^" 將該符號 加入 輸出串列的倒數第二個位置 若該符號是 "邏輯運算子" 將該符號 加入 到輸出串列的最前面位置 若該符號是 "邏輯比較運算子"(例如:大於 小於 相等 不等) 從輸出串列最尾端向前尋找出最靠近的連續運算子群 "階級" 低於c或等於 自己的"運算子" 在該位置上 加入輸出串列 若該符號是 "+" 或 "-" 從輸出串列的最前面開始比較運算元 若沒有任何運算元存在 把自己加入輸出串列的最前面位置 若該符號的階級大於輸出串列目前位置的運算子 改成從輸出串列最後位置向前尋早運算元,並移動到相接續運算子的最前端然後加入 若該符號是 "*" 或 "/" 從輸出符號最尾端尋找連續運算子群,到運算群的最前端位置, 若該位置運算子的階級高於或等於自己的符號, 在該位置加入自己 若該位置運算子的階級小於自記,則將自己加入輸出串列的倒數第二個位置 若找不到任何運算子,也是將自己加入輸出串列的倒數第二個位置 若以上皆非 (表示自己是運算元) 將自己加入到輸出串列的尾端
|
|
( 知識學習|科學百科 ) |