表示式計算

2021-10-17 15:41:10 字數 1107 閱讀 6095

給出乙個表示式,其中運算子僅包含+,-,*,/,^(加 減 乘 整除 乘方)要求求出表示式的最終值。

資料可能會出現括號情況,還有可能出現多餘括號情況。

資料保證不會出現大於或等於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,表示式運算...