7 21 求字首表示式的值(25 分)

2021-08-21 05:38:24 字數 1299 閱讀 7468

【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個字元的字首表示式,只包含 以及運算數,不同物件 運算數 運算符號 之間以空格...