字尾式求值

2021-09-28 01:21:16 字數 1767 閱讀 2457

希望看到部落格的同學能夠告訴我為什麼乙個200的數組裝得下的資料,乙個棧裝不下

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

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

3 5 2 * +

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

輸入格式:

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

輸出格式:

輸入樣例:

輸出樣例:

第乙個點老是過不去,像我一下這樣寫,我很不解:

#include

using

namespace std;

float a[

200]

;float

oper

(float n1,

float n2,string s)

else

if(s==

"-")

else

if(s==

"*")

else

if(s==

"/")

}int

main()

else

cin >> s;

ch=getchar()

;}if(s==

"+"||s==

"-"||s==

"*"||s==

"/"&&top==1)

printf

("%0.1f"

,a[top]);

//這玩意會自動四捨五入 ,厲害了。14.88 保留一位小數 14.9 !!!!!

已經要放棄了但是

:我沒有放棄,歷經4五個小時之後,我成功了:

#include

using

namespace std;

double a[

200]

;//為什麼用陣列而不直接用堆疊呢?因為測試樣例的資料 棧 裝不下,會段錯誤。

double

oper

(double n1,

double n2,

char s)

else

if(s==

'-')

else

if(s==

'*')

else

if(s==

'/')

}int

main()

else

if(s[i]

==' '

)else

double num=

atof

(str.

c_str()

);a[top]

=num;

top++;}

}printf

("%.1f"

,a[--top]);

}**//希望看到部落格的同學能夠告訴我為什麼乙個200的數組裝得下的資料,乙個棧裝不下**

字尾式求值

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

字尾式求值

資料結構實驗之棧與佇列三 字尾式求值 time limit 1000 ms memory limit 65536 kib problem description 對於乙個基於二元運算子的字尾表示式 基本運算元都是一位正整數 求其代表的算術表示式的值。input 輸入乙個算術表示式的字尾式字串,以 作...

棧之後綴式求值

對於乙個基於二元運算子的字尾表示式 基本運算元都是一位正整數 求其代表的算術表示式的值。輸入乙個算術表示式的字尾式字串,以 作為結束標誌。求該字尾式所對應的算術表示式的值,並輸出之。59 684 3 57 基本運算元都是一位正整數 include include include define max...