HDU1237 簡單計算器(棧的應用)

2022-08-31 10:21:09 字數 1150 閱讀 2392

problem description

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

input

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

output

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

sample input

1 + 2

4 + 2 * 5 - 7 / 11

0

sample output

3.00

13.36

source

浙大計算機研究生複試上機考試-2023年

recommend

jgshining

思路:

因為乘除的優先順序要高於加減的優先順序,所以要先進行乘除的計算,每乙個乘除計算的兩個元素是前乙個與後乙個,其中,前乙個數可能原始資料,也可能

是進行了乘除運算之後的結果(第一遍遍歷我們只處理乘除)

可以用棧來模擬,沒進行一次乘除運算就將結果取代棧頂元素

第二遍遍歷的時候,處理加減運算

**:

#includeusing

namespace

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 對於人腦,轉化過程是對表示式...