HDU 1237 簡單計算器

2022-05-08 03:18:09 字數 1213 閱讀 9829

這題沒啥好說的。就是爛模擬,我的是這樣想:

每次讀三個數和兩個運算子,如果第乙個運算子是「+」或者「-」,後面的是「*」或者「/」那麼就先將後面處理,之後將處理之後的值和還沒用的數字再放回去,第乙個運算子也同樣放回。

其他情況便都是先算前面之後把處理之後的值和還沒用的數字放回,將第二個運算子同樣放回。(可以想想為啥)

一開始想用棧的但是用著用著發現太麻煩就換成雙端佇列了hhh有興趣的可以去學一下,挺簡單的。

注意:1.因為是字元數字讀入,要注意數字不止一位,這個樣例跑一下就知道了

2.題目要求精度較高需要用double,float會爆

1 #include 2

#define maxn 200 + 10

3using

namespace

std;

4int

main()523

}24double

temp;

25while (q2.size() > 2)26

43else

if (oper2 == '/'

)4452}

53else

546061}

62double

ans;

63char oper =q1.front(); q1.pop_front();

64double num1 =q2.front(); q2.pop_front();

65double num2 =q2.front(); q2.pop_front();

66//

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

67if (oper == '

+') ans = num1 +num2;

68else

if (oper == '

-') ans = num1 -num2;

69else

if (oper == '

*') ans = num1 *num2;

70else ans = num1 /num2;

71 printf("

%.2lf\n

", ans);

7273}74

return0;

75 }

view code

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