【stack用法詳解】
算術表示式有字首表示法、中綴表示法和字尾表示法等形式。字首表示式指二元運算子位於兩個運算數之前,例如2+3*(7-4)+8/4的字首表示式是:+ + 2 * 3 - 7 4 / 8 4。請設計程式計算字首表示式的結果值。
輸入在一行內給出不超過30個字元的字首表示式,只包含+、-、*、\以及運算數,不同物件(運算數、運算符號)之間以空格分隔。
輸出字首表示式的運算結果,保留小數點後1位,或錯誤資訊error。
+ + 2 * 3 - 7 4 / 8 4
13.0
由於是字首表示式,所以必然是先有運算子,再有兩個數字的,所以我們從後往前遍歷,24-45行**是讀取乙個數字的,每讀完乙個數字就壓入棧中,當讀到運算子時,就將棧頂的兩個元素取出st.top()
並刪除這兩個元素st.pop()
,然後計算值並將值壓入棧中以便下次計算st.push(sum)
,注意乙個小問題,46行寫成else if
,原因自己想想就知道了。
/*
提交時間 狀態 分數 題目 編譯器 耗時 使用者
2018/7/5 09:47:48 答案正確 25 7-21 c++ (g++) 3 ms 17204111
測試點 結果 耗時 記憶體
0 答案正確 3 ms 384kb
1 答案正確 3 ms 384kb
2 答案正確 3 ms 384kb
3 答案正確 2 ms 384kb
*/#include
#include
#include
#include
#include
#include
using
namespace
std;
stack
st;
int main()
else
if (s[i] == '.')
else
if (s[i] == '-')
num = -num;
else
break;
}st.push(num);
}else
if (s[i] != ' ') //else
sum = a / b;}}
st.push(sum);}}
printf("%.1lf", st.top());
}
7 21 求字首表示式的值 25分
pta資料結構與演算法題目集 7 21 求字首表示式的值 25分 算術表示式有字首表示法 中綴表示法和字尾表示法等形式。字首表示式指二元運算子位於兩個運算數之前,例如2 3 7 4 8 4的字首表示式是 2 3 7 4 8 4。請設計程式計算字首表示式的結果值。輸入在一行內給出不超過30個字元的字首...
7 21 求字首表示式的值 25 分
算術表示式有字首表示法 中綴表示法和字尾表示法等形式。字首表示式指二元運算子位於兩個運算數之前,例如2 3 7 4 8 4的字首表示式是 2 3 7 4 8 4。請設計程式計算字首表示式的結果值。輸入格式 輸入在一行內給出不超過30個字元的字首表示式,只包含 以及運算數,不同物件 運算數 運算符號 ...
PTA7 21 求字首表示式的值 25分
算術表示式有字首表示法 中綴表示法和字尾表示法等形式。字首表示式指二元運算子位於兩個運算數之前,例如2 3 7 4 8 4的字首表示式是 2 3 7 4 8 4。請設計程式計算字首表示式的結果值。輸入在一行內給出不超過30個字元的字首表示式,只包含 以及運算數,不同物件 運算數 運算符號 之間以空格...