算術表示式有字首表示法、中綴表示法和字尾表示法等形式。字首表示式指二元運算子位於兩個運算數之前,例如2+3*(7-4)+8/4的字首表示式是:+ + 2 * 3 - 7 4 / 8 4。請設計程式計算字首表示式的結果值。
輸入在一行內給出不超過30個字元的字首表示式,只包含+、-、*、/以及運算數,不同物件(運算數、運算符號)之間以空格分隔。
輸出字首表示式的運算結果,保留小數點後1位,或錯誤資訊error。
+ + 2 * 3 - 7 4 / 8 4
13.0
參考:【表示式轉換 (25 分)】
上面這篇文章寫的很清楚,思路很清晰
當棧為空或者棧頂運算子的優先順序小於當前二元運算子的優先順序時,將該二元運算子匯入。
倘若棧頂運算子的優先順序大於或等於當前二元運算子的優先順序,又分為以下兩種情況,1.若棧頂運算子為( 符號,則直接將該運算子插入即可; 2.若棧頂運算子不是( 符號,則優先輸出棧內的元素,直到碰到( 符號或者棧為空,然後將當前二元運算子插入。
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
#define n 205
intmain()
first =0;
}else
if(s[i]
>=
'0'&&s[i]
<=
'9')
first =0;
}else
if(s[i]
==')')if
(st.
top()==
'(') st.
pop();
}else
if(st.
empty()
||mp[s[i]
]>mp[st.
top()]
)else
st.push
(s[i]);
}}while
(!st.
empty()
)return0;
}
pta7 21 求字首表示式的值
東軟學習小組成員 夜楓 題目 算術表示式有字首表示法 中綴表示法和字尾表示法等形式。字首表示式指二元運算子位於兩個運算數之前,例如2 3 7 4 8 4的字首表示式是 2 3 7 4 8 4。請設計程式計算字首表示式的結果值。輸入格式 輸入在一行內給出不超過30個字元的字首表示式,只包含 以及運算數...
求字首表示式的值
首先粘一下題目 算術表示式有字首表示法 中綴表示法和字尾表示法等形式。字首表示式指二元運算子位於兩個運算數之前,例如2 3 7 4 8 4的字首表示式是 2 3 7 4 8 4。請設計程式計算字首表示式的結果值。輸入格式說明 輸入在一行內給出不超過30個字元的字首表示式,只包含 以及運算數,不同物件...
求字首表示式的值
算術表示式有字首表示法 中綴表示法和字尾表示法等形式。字首表示式指二元運算子位於兩個運算數之前,例如2 3 7 4 8 4的字首表示式是 2 3 7 4 8 4。請設計程式計算字首表示式的結果值。輸入在一行內給出不超過30個字元的字首表示式,只包含 以及運算數,不同物件 運算數 運算符號 之間以空格...