我們人類習慣於書寫「中綴式」,如 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
using
namespace std;
intmain()
i++;if
(temp.
size()
==1&&temp[0]
=='+'
)else
if(temp.
size()
==1&&temp[0]
=='-'
)else
if(temp.
size()
==1&&temp[0]
=='*'
)else
if(temp.
size()
==1&&temp[0]
=='/'
) st.
push
(t1/t2);}
else}if
(!st.
empty()
)return0;
}
我發現我每次寫的都不一樣,感覺下面的版本更好理解
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
intmain()
if((isdigit
(s[i+1]
)&&(s[i]
=='+'
||s[i]
=='-'))
||isdigit
(s[i]
)||s[i]
=='.'
)else
while
(isdigit
(s[i+1]
)||s[i+1]
=='.'
) st.
push
(stod
(temp));
}else
else
if(s[i]
=='-'
)else
if(s[i]
=='*'
)else
if(s[i]
=='/'
) st.
push
(t2/t1);}
}}printf
("%.1f"
,st.
top())
;return0;
}
字尾式求值 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 上述中綴式對應...