1.寫個函式判斷運算符號的優先順序,/*為2,±為1,開兩個棧,分別放數字和運算符號,如果要壓入的運算子優先順序小於等於上一次壓入的運算子,就從符號棧中彈出乙個,數字棧中彈出兩個,運算後壓入數字棧,重複這個操作直到要壓入的運算子優先順序大於棧的頂部儲存的符號。
2.最後將兩個棧中的元素取出來運算,數字棧每次取兩個,符號棧每次取乙個,將計算結果壓入數字棧,重複這個操作知道兩個棧為空。
3.可以用逆波蘭表示式,先將中輟表示式轉化為後輟表示式,(弱弱不會,求教大佬)。
#include
using
namespace std;
intprior
(char c)
double
cau(
double a,
double b,
char c)
intmain()
elseif(
(s[i]
==' ')&&
isdigit
(s[i-1]
))else
if(s[i]
=='+'
|| s[i]
=='-'
|| s[i]
=='*'
|| s[i]
=='/'
) ope.
push
(s[i]);
}}while
(!ope.
empty()
)printf
("%.2f\n"
, dig.
top())
;}}
hdu1237 簡單計算器
模擬棧運算,其實遞迴也可以,不過我夠嗆能寫的出來 其實老早就看過表示式求值的問題,只不過一直沒有敲過,今天敲了一下,發現還是有不少問題的 code include include include using namespace std bool check char,char void solve ...
hdu 1237 簡單計算器
模擬棧。設兩個陣列,乙個裝運算元,乙個裝操作符。根據優先順序,先乘除,後加減。include include include include char s 210 op 200 s1 200 double a 200 int char num char s1,int n 字串轉化成int型數 ret...
HDU1237 簡單計算器
problem description 讀入乙個只包含 的非負整數計算表示式,計算該表示式的值。input 測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。output 對每個測試用例...