希望看到部落格的同學能夠告訴我為什麼乙個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...