字首表示式求值

2021-09-23 13:31:17 字數 570 閱讀 6836

#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==1&&f2==1)

else

st.push(yunsuan(a,b,s[j]));

}else

}else //如果是運算元就轉換成數壓棧

}if(flag==0)

printf("%.1f",st.top());

return 0;

}

沒什麼難度成功ac 跟字尾表示式差不多 遇到符號從棧中彈出2個元素 遇到運算元壓棧

主要是要注意異常退出比如棧中拿不出兩個元素或者除法遇到除以0的情況

然後要學會atof和atoi的使用  字元出轉整型和實型

字首表示式求值

思路 這裡實際是把字首表示式逆序輸出轉化為類似後序表示式求值 比如 輸入 2 3 7 4 8 4 處理成 4 8 4 7 3 2 鍊錶,放到字尾表示式求值程式 postfixeval計算得13.0 include include include include define maxsize 100 ...

字首表示式求值

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

字首,字尾表示式求值

字首表示式 從右至左掃瞄表示式,遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧頂的兩個數,用運算子對它們做相應的計算 棧頂元素 op 次頂元素 並將結果入棧 重複上述過程直到表示式最左端,最後運算得出的值即為表示式的結果 從右至左,遇數壓1,遇符彈2,再來計算。字尾表示式 從左至右掃瞄表示式,遇到...