字尾式求值 25 分

2021-09-28 19:51:16 字數 1568 閱讀 8170

題目描述

我們人類習慣於書寫「中綴式」,如3 + 5 * 2,其值為13。 (p.s. 為什麼人類習慣中綴式呢?是因為中綴式比字尾式好用麼?)

而計算機更加習慣「字尾式」(也叫「逆波蘭式」,reverse polish notation)。上述中綴式對應的字尾式是:3 5 2 * +

現在,請對輸入的字尾式進行求值。

輸入格式:

在一行中輸入乙個字尾式,運算數和運算子之間用空格分隔,運算數長度不超過6位,運算子僅有+ - * / 四種。

輸出格式:

在一行中輸出字尾式的值,保留一位小數。

輸入樣例:

3 5.4 2.2 * +
輸出樣例:

14.9
字尾表示式求值,只需要從左到右依次掃瞄然後求值。

遇到運算元放入棧中。

遇到操作符,彈出棧頂兩個運算元,注意做除法和減法的時候,第二個彈出來的數才是被除數和被減數。

坑點:運算元有負數,所以不能直接判斷字串首位是不是+-*/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

intmain()

}if(c ==

'\n'

)break;}

printf

("%.1f\n"

, st.

top())

;return0;

}

exp=

input()

.split(

)ls=

list()

defcal

(a,b,i)

:if i==

"+":

return a+b

elif i==

"-":

return a-b

elif i==

"*":

return a*b

else

:return a/b

for i in exp:

if i in

"+-*/"

: a=ls.pop(

) b=ls.pop())

else

:float

(i))

print(""

.format

(float

(ls.pop())

))

7 11 字尾式求值 25 分

我們人類習慣於書寫 中綴式 如 3 5 2 其值為13。p.s.為什麼人類習慣中綴式呢?是因為中綴式比字尾式好用麼?而計算機更加習慣 字尾式 也叫 逆波蘭式 reverse polish notation 上述中綴式對應的字尾式是 3 5 2 現在,請對輸入的字尾式進行求值。輸入格式 在一行中輸入乙...

字尾式求值

time limit 1000ms memory limit 65536k 有疑問?點這裡 對於乙個基於二元運算子的字尾表示式 基本運算元都是一位正整數 求其代表的算術表示式的值。輸入乙個算術表示式的字尾式字串,以 作為結束標誌。求該字尾式所對應的算術表示式的值,並輸出之。59 684 3 57 基...

字尾式求值

希望看到部落格的同學能夠告訴我為什麼乙個200的數組裝得下的資料,乙個棧裝不下 我們人類習慣於書寫 中綴式 如 3 5 2 其值為13。p.s.為什麼人類習慣中綴式呢?是因為中綴式比字尾式好用麼?而計算機更加習慣 字尾式 也叫 逆波蘭式 reverse polish notation 上述中綴式對應...