团体天梯练习 L2-033 简单计算器
L2-033 简单计算器

本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示,计算器由两个堆栈组成,一个堆栈
从
从
执行计算
将得到的结果压回
直到两个堆栈都为空时,计算结束,最后的结果将显示在屏幕上。
输入格式:
输入首先在第一行给出正整数
第二行给出
输出格式:
将输入的数字和运算符按给定顺序分别压入堆栈
如果执行除法时出现分母为零的非法操作,则在一行中输出:
输入样例 1:
5
40 5 8 3 2
/ * - +
输出样例 1:
2
输入样例 2:
5
2 5 8 4 4
* / - +
输出样例 2:
ERROR: 5/0
解题思路
先将所有数字先放入栈
/* 一切都是命运石之门的选择 El Psy Kongroo */
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<queue>
#include<deque>
#include<stack>
#include<map>
#include<set>
#include<bitset>
#include<cmath>
#include<functional>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<int, pii> piii;
typedef pair<double, double> pdd;
typedef pair<string, int> psi;
typedef __int128 int128;
#define PI acos(-1.0)
#define x first
#define y second
//int dx[4] = {1, -1, 0, 0};
//int dy[4] = {0, 0, 1, -1};
const int inf = 0x3f3f3f3f, mod = 1e9 + 7;
int n;
stack<int> num;
stack<char> ops;
bool flag = true;
int error; //标记错误
int get_res(int n1, int n2, int op){
int res = 0;
if(op == '+') res = n1 + n2;
else if(op == '-') res = n2 - n1;
else if(op == '*') res = n2 * n1;
else if(op == '/'){
if(n1 == 0){
if(flag){
flag = false;
error = n2; //只记录第一次错误
res = inf;
}
}else res = n2 / n1;
}
return res;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> n;
for(int i = 0; i < n; i ++ ){
int x; cin >> x;
num.push(x);
}
for(int i = 0; i < n - 1; i ++ ){
char ch; cin >> ch;
ops.push(ch);
}
while((int)num.size() > 1){
int n1 = num.top();
num.pop();
int n2 = num.top();
num.pop();
char op = ops.top();
ops.pop();
int res = get_res(n1, n2, op);
num.push(res);
}
if(flag) cout << num.top() << endl;
else cout << "ERROR: " << error << "/0" << endl;
return 0;
}
一切都是命运石之门的选择,本文章来源于博客园,作者:MarisaMagic,出处:https://www.cnblogs.com/MarisaMagic/p/17333765.html,未经允许严禁转载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具