C C 帶括號四則運算

2021-07-04 02:39:34 字數 1151 閱讀 7916

(1).首先從string讀入表示式,取出每乙個字元後裝入deque容器coll1中(原始碼在後面)。

(2).從該容器取出每乙個元素,利用棧將中綴表示式轉換成字尾表示式(可參考:將字尾表示式裝入容器coll3中。

(3).最後從coll3中取出元素逐一處理,既使用逆波蘭式求值(如下圖)。

c++原始碼

可編譯並正常執行,此程式只支援一位數字運算,例如 3*(2+8)/5+6,有需要多位運算或者浮點型運算請自行修改,原理相同。

#include#include#include#includeusing namespace std;

//判斷是否為括號

bool ispra(char c)

//獲得符號的優先性

int getpri(char c)

}//判斷符號的優先性

void check(char c, stack& coll2, deque& coll3)

if(ispra(c))

//當遇到左括號時,彈出但不加入coll3(字尾表示式中)

coll2.pop();

} }else //如果不是括號

else

}}//從coll中取出元素,分配元素到coll2和coll3中

void allocate(deque& coll1, stack& coll2, deque& coll3)

else

}//如果輸入結束,將coll2的元素全部彈出,加入字尾表示式中

while(!coll2.empty()) }

//計算字尾表示式

void calculate(deque& coll3, stack& coll4)

else //如果是操作符,從棧中彈出元素進行計算

} }}

int main()

//從coll中取出元素,分配元素到coll2和coll3中

allocate(coll1,coll2,coll3);

//計算字尾表示式

calculate(coll3,coll4);

cout<

帶括號的四則運算

帶括號的四則運算 public class caculatordemo 帶括號的四則運算 param exp return public static double calckuohao string exp else 不帶括號的四則運算 param exp return public static...

C 實現四則運算器 帶括號

基本分析可以看另一篇文章c 實現四則運算器 無括號 棧的實現 ifndef stack h define stack h includeclass stack int stack int unsigned int capacity bottom new int capacity 1 top bott...

含括號的四則運算

總體思路 需要用到棧,從中綴表示式到字尾表示式,再把字尾表示式轉化為結果,比如計算9 3 1 5 4 2,這個式子就叫做中綴表示式,然後我們需要把它轉化成字尾表答式,方法 將中綴表示式從左到右讀取,如果是數字,直接輸出到字尾表示式,如果是字元,則如果是右括號,把從棧頂開始到棧中左括號的字元輸出到字尾...