問題 a: 簡單計算器
時間限制: 1 sec 記憶體限制: 32 mb
提交: 2132 解決: 877
[提交][狀態][討論版][命題人:外部匯入]
題目描述
讀入乙個只包含 +, -, *, / 的非負整數計算表示式,計算該表示式的值。
輸入測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。
輸出對每個測試用例輸出1行,即該表示式的值,精確到小數點後2位。
樣例輸入
30 / 90 - 26 + 97 - 5 - 6 - 13 / 88 * 6 + 51 / 29 + 79 * 87 + 57 * 92
0樣例輸出
12178.21
1,用string 儲存讀入的數值
2,去除讀入的空格
3,建立結構體
#include
#include
#include
#include
#include
#include
using std::string;
using std::map;
using std::stack;
using std::queue;
using std::cin;
typedef
struct node
node;
string g_str;
stack g_s;
queue g_q;
map<
int,
char
> g_op;
void
change()
g_q.
push
(temp)
;//運算元壓入字尾表示式佇列
}else
temp.m_op = g_str[i]
; g_s.
push
(temp)
;//壓入操作符棧
i++;}
}while
(!g_s.
empty()
)// while(!g_q.empty()) //列印字尾佇列
// else
// g_q.pop();
// }
// printf("\n");
}double
cal(
)else
}return g_s.
top(
).m_num;
//棧頂元素就是字尾表示式的值
}int
main
(int argc,
char
const
*ar**)
while
(!g_s.
empty()
) g_s.
pop();
//初始化棧,在下次計算開始時清空棧內容
change()
;printf
("%.2f\n"
,cal()
);}return0;
}
codeup1918簡單計算器
讀入乙個只包含 的非負整數計算表示式,計算該表示式的值。測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。對每個測試用例輸出1行,即該表示式的值,精確到小數點後2位。30 90 26 9...
codeup 1918 簡單計算器
codeup 1918 include include include include include include using namespace std struct node string srt stack s 操作符棧 queue q 字尾表示式序列 map char int op vo...
CodeUp1918 簡單計算器
讀入乙個只包含 的非負整數計算表示式,計算該表示式的值。測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。對每個測試用例輸出1行,即該表示式的值,精確到小數點後2位。30 90 26 9...