HDU_1237 一個簡單的計算器
連結在此:https://vjudge.net/contest/291337#problem/D
中文題解:
讀入一個只包含 +, -, *, / 的非負整數計算表示式,計算該表示式的值。
Input
測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用一個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。
Output
對每個測試用例輸出1行,即該表示式的值,精確到小數點後2位。
Sample Input
1 + 2
4 + 2 * 5 - 7 / 11
0
Sample Output
3.00
13.36
看這道題一頭霧水,完全沒有思路,看別人的程式碼,用棧是一種很好的思路
解法:把第一個數壓入棧,接下來根據每次的運算子來確定操作方法,若是加或減,把輸入的x或-x繼續壓入棧中,若是乘或除,則將運算子前面的數字取出,也就是棧頂的元素,運算後繼續壓入棧內,這樣輸入結束之後就可以直接將棧內的元素加起來即是所求結果
程式碼在此:
#include<cstdio>
#include<iostream>
#include<queue>
#include<stack>
#include<cstring>
using namespace std;
int main()
{
double a;
char c;
stack<double>s;
while(cin>>a)
{
double x;
s.push(a);
if(getchar()!=' ')break;
while(1)
{
c=getchar();
cin>>a;
if(c=='+')
{
s.push(a);
}
else if(c=='-')
{
s.push(-a);
}
else if(c=='*')
{
x=s.top();
s.pop();
s.push(x*a);
}
else if(c=='/')
{
x=s.top();
s.pop();
s.push(x/a);
}
if(getchar()!=' ')break;
}
double sum=0;
while(!s.empty())
{
sum+=s.top();
s.pop();
}
printf("%.2lf\n",sum);
}
}
相關文章
- 一個最簡單的計算器
- Java實現一個簡單的計算器Java
- 用java實現一個簡單的計算器Java
- Python編寫一個簡單計算器Python
- 用JS點選事件做一個簡單的計算器JS事件
- 從0到1實現一個簡單計算器
- java 簡單工廠模式(實現一個計算器)Java模式
- 簡單混合運算的計算器
- 利用ANTLR4實現一個簡單的四則運算計算器
- 簡單版計算器
- MFC簡單計算器
- PHP簡單計算器PHP
- Java語言編寫計算器(簡單的計算器)Java
- python——設計一個簡單的購房商貸月供計算器Python
- JavaScript實現一個簡易的計算器JavaScript
- JavaScript 簡單計算器效果JavaScript
- 簡單計算器(棧的應用)
- 使用QT做一個簡易計算器QT
- 簡單計算器 (關於棧的一種應用)
- PyQt4(簡單計算器)QT
- 前端 JavaScript 實現一個簡易計算器前端JavaScript
- JS_實現一個簡易計算器JS
- python 的 Tkinter實現一個簡易計算器Python
- 【Flutter 實戰】簡約而不簡單的計算器Flutter
- JavaScript簡單計算器程式碼分析JavaScript
- 16_簡單計算器實現
- IOS開發 製作簡單的計算器iOS
- html+css+js製作一個簡易計算器HTMLCSSJS
- 7-20 簡單計算器 (20分)
- java方法練習之簡單計算器Java
- 如何寫一個計算器?
- 一個簡單的Json轉換器JSON
- 一個簡單的JavaScript模組載入器JavaScript
- hdu 1237 Java 簡單計算器Java
- Eigen:矩陣計算簡單用法(一)矩陣
- bc : 一個命令列計算器命令列
- Groovy簡單公式計算公式
- 實現一個簡單的 JavaScript 編譯器JavaScript編譯