給出乙個表示式,其中運算子僅包含+,-,*,/,^(加 減 乘 整除 乘方)要求求出表示式的最終值。
資料可能會出現括號情況,還有可能出現多餘括號情況。
資料保證不會出現大於或等於231的答案。
資料可能會出現負數情況。
輸入格式
輸入僅一行,即為表示式。
輸出格式
輸出僅一行,既為表示式算出的結果。
輸入樣例:
(2+2)^(1+1)
輸出樣例:16
#include
#include
#include
#include
using
namespace std;
// ops 操作符棧 stk 數字棧
stack<
char
> ops;
stack<
int> stk;
// 快速冪,求 a^b
intqmi
(int a,
int b)
// 表示式計算
void
calc()
intmain()
i = j -1;
stk.
push
(t);
}else
else
i = j -1;
stk.
push
(-t);}
// 若是操作符號,則彈出 ops 棧頂,並彈出兩個數字進行運算
}else
// 若是 *、/ 則棧頂元素只有優先順序更高時才進行運算
}else
if(c ==
'*'|| c ==
'/')
else
if(c ==
'^')
else
if(c ==
')')
else
if(c ==
'(')
else}}
cout << stk.
top(
)<< endl;
return0;
}
表示式計算
棧的應用舉例 棧在表示式計算過程中的應用 建立運算元棧和運算子棧。運算子有優先順序。規則 自左至右掃瞄表示式,凡是遇到運算元一律進運算元棧。當遇到運算子時,如果它的優先順序比運算子棧棧頂元素的優先順序高就進棧。反之,取出棧頂運算子和運算元棧棧頂的連續兩個運算元進行運算,並將結果存入運算元棧,然後繼續...
表示式計算
表示式計算對於我們人來說,喜歡通過中綴表示式來計算,而計算機則不一樣,需要通過字尾表示式來計算,首先通過例項來介紹一下中綴表示式和字尾表示式 例子 中綴表示式 3 5 2 3 6 字尾表示式 3 5 2 3 6 那麼轉換規則是怎麼樣的呢?規則 從左到右遍歷中綴表示式的每個數字和符號,若是數字就輸出,...
表示式計算
表示式計算 時間限制 1.0s 記憶體限制 256.0mb 問題描述 輸入乙個只包含加減乖除和括號的合法表示式,求表示式的值。其中除表示整除。輸入格式 輸入一行,包含乙個表示式。輸出格式 輸出這個表示式的值。樣例輸入 1 2 3 4 5 樣例輸出 4資料規模和約定 表示式長度不超過100,表示式運算...