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
- Python編寫一個簡單計算器Python
- 用java實現一個簡單的計算器Java
- 用JS點選事件做一個簡單的計算器JS事件
- 簡單混合運算的計算器
- 從0到1實現一個簡單計算器
- python——設計一個簡單的購房商貸月供計算器Python
- 簡單計算器(棧的應用)
- 使用QT做一個簡易計算器QT
- 簡單計算器 (關於棧的一種應用)
- [20211220]sqlplus簡單計算器.txtSQL
- 前端 JavaScript 實現一個簡易計算器前端JavaScript
- 【Flutter 實戰】簡約而不簡單的計算器Flutter
- IOS開發 製作簡單的計算器iOS
- JavaScript簡單計算器程式碼分析JavaScript
- 16_簡單計算器實現
- java方法練習之簡單計算器Java
- 7-20 簡單計算器 (20分)
- 0014---簡單的計算
- html+css+js製作一個簡易計算器HTMLCSSJS
- 教你python tkinter實現簡單計算器功能Python
- 設計一個簡單的devops系統dev
- 實現一個簡單的 JavaScript 編譯器JavaScript編譯
- 九、 一個簡單的播放器(各自同步)播放器
- 簡單的寫一個釋出訂閱器
- bc : 一個命令列計算器命令列
- 1、簡單工廠模式實現計算器功能模式
- 2 簡單的計算機模型MARIE計算機模型
- Flutter實現一個較好看的計算器Flutter
- python簡易計算器Python
- 一個簡單的十六進位制解碼器
- Pet:一個簡單的命令列片段管理器命令列
- 手把手帶你利用棧來實現一個簡易版本的計算器
- 一個JS程式設計師對機器學習的概念簡單手記JS程式設計師機器學習
- 一個簡簡單單的紅點系統框架框架
- 一個簡單的 PWA 指南
- 一個簡單的Tessellation Shader
- 一個簡單的「IOC」例子