把運算的處理專門放在乙個函式裡,然後通過優先順序的判斷去呼叫函式,注意那個』('還是放在else if裡面吧,不要和運算混在一起了
#includeusing namespace std;
const int n=1e5+10;
stacks1;
stacks2;
int flag=0;
//處理+-*/四個
mapcmp=, , ,
};void eval()
if(flag) s1.push(0);//隨意進乙個數
else s1.push(x);
}int main()
} //清理低優先順序
while(s2.size()) eval();
if(flag) cout<<"illegal"《如果除數是0 的話,直接return 0 吧
表示式求值(棧)
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 acm隊的mdd想做乙個計算器,但是,他要做的不僅僅是一計算乙個a b的計算器,他想實現隨便輸入乙個表示式都能求出它的值的計算器,現在請你幫助他來實現這個計算器吧。比如輸入 1 2 4 程式就輸出1.50 結果保留兩位小數 輸入...
棧 表示式求值
核心演算法思想 1.運用兩個棧,乙個存運算子,乙個存數值 2.以 做為標誌位,開頭或者結尾 3.檢查當前字元,若當前字元為數值,則加入數值棧,若為運算子,則檢驗當前運算子的優先順序,1 若當前運算子優先順序大於棧頂優先順序,則把該運算子壓入棧 2 若當前運算子優先順序等於棧頂優先順序 括號的情況 則...
棧應用 表示式求值
include stdafx.h include using namespace std const int explenght 20 const int stack init size 20 const int stack incrment 10 templateclass stack stack...