讀入乙個只包含 +, -, *, / 的非負整數計算表示式,計算該表示式的值。
測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過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 字尾表示式 棧的應用
這幾天在預習資料結構的知識。剛好看到棧的應用 字尾表示式 逆波蘭表示式 字尾表示式 操作符都在數字的後面,首先要運用字尾表示式,要明白如何從中綴表示式轉換到字尾表示式,然後如何從字尾表示式進行計算。首先中綴轉字尾 將表示式讀入,數字直接輸出到字尾表示式中,符號則 判斷其與棧頂元素之間優先順序的關係,...