HDU1237 表示式求值

2021-09-12 08:28:37 字數 1341 閱讀 4250

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

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

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

1 + 2

4 + 2 * 5 - 7 / 11

0

3.00

13.36

中綴表示式轉字尾,再求值即可

具體見:

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

vector ans;

vector thought_opera =

;short priority[5]

=;bool

is_opera

(string tp)

ll string_to_num

(string tp)

ll num =0;

for(

int i =

0; i < tp.

length()

;++i)

return flag * num;

}int

main()

opera.

pop();

//括號不用輸出

}else

if(tmp ==

"(")

else

else

} opera.

push

(tmp);}

}else

}while

(!opera.

empty()

)//for (auto k : ans)

stack<

double

> number;

//由逆波蘭表示式求值

for(

auto k : ans)

else

if(k ==

"+")

else

if(k ==

"*")

else

}else

}printf

("%.2f\n"

, number.

top())

;}}

hdu1237 表示式求值)

怎麼講呢,我做這題做了很久都沒有做出來,然後我是看別人部落格才寫出來的。做完這題給我什麼感覺呢,做題一定要細心!細心!細心!重要的事情說三遍!ac include include intmain else if str i str i str i str i fuhao t str i 存符號 me...

HDU 1237 簡單計算器 表示式求值

讀入乙個只包含 的非負整數計算表示式,計算該表示式的值。input 測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。output 對每個測試用例輸出1行,即該表示式的值,精確到小數點後...

hdu 1237 字尾表示式 棧的應用

這幾天在預習資料結構的知識。剛好看到棧的應用 字尾表示式 逆波蘭表示式 字尾表示式 操作符都在數字的後面,首先要運用字尾表示式,要明白如何從中綴表示式轉換到字尾表示式,然後如何從字尾表示式進行計算。首先中綴轉字尾 將表示式讀入,數字直接輸出到字尾表示式中,符號則 判斷其與棧頂元素之間優先順序的關係,...