HDU 1237 乙個簡單的計算器

2021-09-18 01:46:43 字數 813 閱讀 4161

鏈結在此:

中文題解:

讀入乙個只包含 +, -, *, / 的非負整數計算表示式,計算該表示式的值。

input

測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。

output

對每個測試用例輸出1行,即該表示式的值,精確到小數點後2位。

sample input

1 + 2

4 + 2 * 5 - 7 / 11

0sample output

3.00

13.36

看這道題一頭霧水,完全沒有思路,看別人的**,用棧是一種很好的思路

解法:把第乙個數壓入棧,接下來根據每次的運算子來確定操作方法,若是加或減,把輸入的x或-x繼續壓入棧中,若是乘或除,則將運算子前面的數字取出,也就是棧頂的元素,運算後繼續壓入棧內,這樣輸入結束之後就可以直接將棧內的元素加起來即是所求結果

**在此:

#include#include#include#include#includeusing namespace std;

int main()

else if(c=='-')

else if(c=='*')

else if(c=='/')

if(getchar()!=' ')break;

} double sum=0;

while(!s.empty())

printf("%.2lf\n",sum);

}}

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 對每個測試用例...