7-13 简单计算器 (25 分)

简介: 7-13 简单计算器 (25 分)

7-13 简单计算器 (25 分)


7fe85390cebdb11663a2f944503ca4f3.jpg


本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示,计算器由两个堆栈组成,一个堆栈 S1 存放数字,另一个堆栈 S2 存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就执行以下操作:


从 S1​ 中弹出两个数字,顺序为 n1​ 和 n2​;
从 S2​ 中弹出一个运算符 op;
执行计算 n2​ op n1​;
将得到的结果压回 S1​。


直到两个堆栈都为空时,计算结束,最后的结果将显示在屏幕上。


输入格式:


输入首先在第一行给出正整数 N(1<N≤103),为 S1 中数字的个数。


第二行给出 N 个绝对值不超过 100 的整数;第三行给出 N−1 个运算符 —— 这里仅考虑 +-*/ 这四种运算。一行中的数字和符号都以空格分隔。


输出格式:


将输入的数字和运算符按给定顺序分别压入堆栈 S1 和 S2,将执行计算的最后结果输出。注意所有的计算都只取结果的整数部分。题目保证计算的中间和最后结果的绝对值都不超过 109。


如果执行除法时出现分母为零的非法操作,则在一行中输出:ERROR: X/0,其中 X 是当时的分子。然后结束程序。


输入样例 1:


1. 5
2. 40 5 8 3 2
3. / * - +


输出样例 1:


2



输入样例 2:


1. 5
2. 2 5 8 4 4
3. * / - +


输出样例 2:


ERROR: 5/0

 


#include<bits/stdc++.h>
using namespace std;
int main(){
    int ar[1000],n,p=0,q=0,f=0;
    char op[1000]; cin>>n;
    for(int i=0;i<n;i++) {
        int x; cin>>x;
        ar[p++]=x;
    }p--;
    for(int i=0;i<n-1;i++){
        char ch; cin>>ch;
        op[q++]=ch;
    }q--; int a;
    while(p>=0){
        int b; char ch;
        if(f==0){ a=ar[p--]; ch=op[q--]; b=ar[p--]; f=1; }
        else if(f==1){ b=ar[p--]; ch=op[q--]; }
        if(ch=='+') a=a+b;
        if(ch=='-') a=b-a;
        if(ch=='*') a=a*b;
        if(ch=='/'){ 
            if(a==0){ printf("ERROR: %d/%d",b,a); return 0;}
            a=b/a;
        }
    }
    cout<<a<<endl;
    return 0;
}
目录
相关文章
L2-033 简单计算器 (25 分)(栈模拟)
L2-033 简单计算器 (25 分)(栈模拟)
369 0
L2-033 简单计算器 (25 分)(栈模拟)
|
7月前
|
C语言
C语言学习记录——将三位数的个十百位单独打印,并求其和。
C语言学习记录——将三位数的个十百位单独打印,并求其和。
53 4
|
8月前
|
C语言
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
|
8月前
|
JavaScript 前端开发
JavaScript解决录入成绩并输出最高分和最低分问题
JavaScript解决录入成绩并输出最高分和最低分问题
83 0
|
Serverless C语言
用代码实现一个简单计算器
用代码实现一个简单计算器
147 0
|
8月前
|
Python
简单计算器实现,包括两个数
简单计算器实现,包括两个数
OJ题库:计算日期到天数转换、打印从1到最大的n位数 、尼科彻斯定理
OJ题库:计算日期到天数转换、打印从1到最大的n位数 、尼科彻斯定理
65 0
|
测试技术
PTA 1039 到底买不买 (20 分)
小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。
124 0

热门文章

最新文章