對於乙個字首表示式的求值而言,首先要從右至左掃瞄表示式,從右邊第乙個字元開始判斷,如果當前字元是數字則一直到數字串的末尾再記錄下來,如果是運算子,則將右邊離得最近的兩個「數字串」作相應的運算,以此作為乙個新的「數字串」並記錄下來。一直掃瞄到表示式的最左端時,最後運算的值也就是表示式的值。例如,字首表示式「- 1 + 2 3「的求值,掃瞄到3時,記錄下這個數字串,掃瞄到2時,記錄下這個數字串,當掃瞄到+時,將+右移做相鄰兩數字串的運算子,記為2+3,結果為5,記錄下這個新數字串,並繼續向左掃瞄,掃瞄到1時,記錄下這個數字串,掃瞄到-時,將-右移做相鄰兩數字串的運算子,記為1-5,結果為-4,所以表示式的值為-4。
pat:求字首表示式的值
#include#include#include
#include
#include
using
namespace
std;
intmain()
else
if(s[i]=='.'
)
else
if(s[i]=='
-'&&s[i+1]!='')
if(s[i]=='')
if(st.size()<2
) a=st.top();st.pop();
b=st.top();st.pop();
if(s[i]=='+'
)else
if(s[i]=='-'
)else
if(s[i]=='*'
)else
if(s[i]=='/'
) st.push(c);}}
if(k)
if(st.size()!=1||i!=-1
)else
return0;
}/*- / 10 + 3 2 * 2 3
*/
字首表示式求值
思路 這裡實際是把字首表示式逆序輸出轉化為類似後序表示式求值 比如 輸入 2 3 7 4 8 4 處理成 4 8 4 7 3 2 鍊錶,放到字尾表示式求值程式 postfixeval計算得13.0 include include include include define maxsize 100 ...
字首表示式求值
include using namespace std stackst double yunsuan double a,double b,string c else if c else if c else int main for int j i 1 j 0 j if st.empty if f1 ...
字首,字尾表示式求值
字首表示式 從右至左掃瞄表示式,遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧頂的兩個數,用運算子對它們做相應的計算 棧頂元素 op 次頂元素 並將結果入棧 重複上述過程直到表示式最左端,最後運算得出的值即為表示式的結果 從右至左,遇數壓1,遇符彈2,再來計算。字尾表示式 從左至右掃瞄表示式,遇到...