problem description
讀入乙個只包含 +, -, *, / 的非負整數計算表示式,計算該表示式的值。
input
測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。
output
對每個測試用例輸出1行,即該表示式的值,精確到小數點後2位。
sample input
1 + 2sample output4 + 2 * 5 - 7 / 11
0
3.00source13.36
浙大計算機研究生複試上機考試-2023年
recommend
jgshining
思路:
因為乘除的優先順序要高於加減的優先順序,所以要先進行乘除的計算,每乙個乘除計算的兩個元素是前乙個與後乙個,其中,前乙個數可能原始資料,也可能
是進行了乘除運算之後的結果(第一遍遍歷我們只處理乘除)
可以用棧來模擬,沒進行一次乘除運算就將結果取代棧頂元素
第二遍遍歷的時候,處理加減運算
**:
#includeusingnamespace
std;
const
int maxn=210
;int
num[maxn];
char
f[maxn];
double
s[maxn];
char
sg[maxn];
intmain()
int cou=0,cou2=0
;
double tmp=0
; s[cou++]=num[0
];
for(i=1,j=0;j)
}double res=s[0
];
for(i=1,j=0;j)
}printf(
"%.2lf\n
",res);
//cout<}
}
hdu 1237 簡單計算器 棧
這個題目是大部分人都是用棧來寫的,本週訓練老師也講了兩次棧的原理。自己最近也看了資料結構中與棧有關的內容,還是比較深刻理解了沒有括號情況下表示式求解。include include include using namespace std char s 250 post 250 s是輸入的中綴表示式,...
hdu 1237 簡單計算器(棧)
hdu 1237 簡單計算器 棧 如果是 就把原數壓入棧 如果是 就把相反數壓入棧 如果是 就把當前數和棧頂數計算後壓入棧 如果是 就把當前數和棧頂數計算後壓入棧 注意該題是3 2而不是3 2,有空格 include include include include includeusing name...
hdu1237 簡單計算器 棧
題目鏈結 題目給出的是中綴表示式,中綴表示式是我們習慣上用的計算表示式,人腦計算方便快速,但是計算機不然,計算機計算波蘭和逆波蘭表示式都很方便,但對中綴表示式通常需要轉化成字首或字尾表示式才方便計算。舉例 4 2 5 7 11 轉化成逆波蘭的形式是 4 2 5 7 11 對於人腦,轉化過程是對表示式...