字首表示式求值

2022-04-11 02:20:33 字數 955 閱讀 2620

對於乙個字首表示式的求值而言,首先要從右至左掃瞄表示式,從右邊第乙個字元開始判斷,如果當前字元是數字則一直到數字串的末尾再記錄下來,如果是運算子,則將右邊離得最近的兩個「數字串」作相應的運算,以此作為乙個新的「數字串」並記錄下來。一直掃瞄到表示式的最左端時,最後運算的值也就是表示式的值。例如,字首表示式「- 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,再來計算。字尾表示式 從左至右掃瞄表示式,遇到...