莫浅子 2022-09-25 10:35 采纳率: 92.9%
浏览 12
已结题

后缀表达式无输出结果

题目描述
所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。

如:3*(5-2)+7}3*(5-2)+7 对应的后缀表达式为:3.5.2.-*7.+@ 在该式中,@ 为表达式的结束符号。. 为操作数的结束符号。

输入格式
输入一行一个字符串 ss,表示后缀表达式。

输出格式
输出一个整数,表示表达式的值。

输入输出样例
输入
3.5.2.-*7.+@
输出
16


#include <bits/stdc++.h>
using namespace std;
int main()
{
    stack<int> nub_stack;
    string s;
    int temp[12];     //临时数组存放数据 
    cin>>s;
    int j;
    int num;
    for(int i = 0;i < s.size();i ++ ){
        if(s[i] >= '0' && s[i] <= '9'){
            j = 0;
            temp[j] = s[i];
            j++;
            for(int p = i+1; ;p ++)
            {
                if(s[p] != '.'){
                    temp[j]= s[p];
                    j++;                    
                }
                  
                else{
                    int t = 0;
                    int nu;
                    for(int q = j - 1;q >= 0; q --){
                        nu += temp[q] * pow(10,t);
                        t++; 
                    }
                    nub_stack.push(nu);    
                }    
            }
        }
        int m,n;
        m = nub_stack.top();
        nub_stack.pop();
        n = nub_stack.top();
        if(s[i] == '*')
            num = m * n;
        if(s[i] == '+')
            num = m + n;
        if(s[i] == '-')
            num = n - m;
        if(s[i] == '/')
            num = n / m;    
    } 
    cout<<num;
}

结果没有输出,不知道哪里出错了

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-09-25 10:53
    关注

    17行的for循环,你的结束条件在哪?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月3日
  • 已采纳回答 9月25日
  • 创建了问题 9月25日

悬赏问题

  • ¥50 swiftui @query 报错
  • ¥50 怎么解决刷卡或扫码后,点击软件输入框,win10屏幕键盘不会自动弹出的问题
  • ¥15 如何使用arcgispro的训练深度模型,发现water和nowater精度为0?(相关搜索:深度学习)
  • ¥20 matlab作业不太懂呀有问题能给个代码吗
  • ¥15 自制电路图为何无法驱动ESP01S?
  • ¥15 前端加access数据库
  • ¥15 ARCGIS 多值提取到点 ERROR 999999
  • ¥15 mysql异常断电, [MY-011971] [InnoDB]
  • ¥15 uni.onBluetoothDeviceFound熄屏不运行
  • ¥15 求PHDA糖尿病并发症数据集,有偿