用手写算法 2022-04-24 22:42 采纳率: 62.5%
浏览 38
已结题

关于一些报错,想知道怎么解决。

img

img


img

img

img

img

img

img


我想问一下这几个错误是什么情况啊,我程序本身应该没有问题,之前有一个思路,改了一个思路,想问一下怎么解决这些错误。

  • 写回答

3条回答 默认 最新

  • 关注

    代码修改如下:
    标头.h文件:

    #pragma once
    
    #include <iostream>
    #define MAXSIZE 20
    using namespace std;
    
    class stack
    {
    public:
        stack();
        //~stack();
        void clearstack(); //清空
        int isempty(); //判空
        int length(); //求长度
        char gettop(); //取栈顶元素
        int push(int); //进栈
        int pop(); //出栈
        int traverse(); //遍历
    
        //增加sum函数的声明
        int sum();
    protected:
        int* base;  //栈底指针
        int* top;   //栈顶指针
        int stacksize; //
    };
    
    

    源1.cpp文件:

    #include "标头.h"
    
    stack::stack()
    {
        base = new int[MAXSIZE];
        top = base;
        stacksize = MAXSIZE;
    }
    
    void stack::clearstack()
    {
        top = base;
        return;
    }
    
    int stack::isempty()
    {
        if (top == base)
        {
            cout << "栈为空!" << endl;
            return 0;
        }
        else
        {
            cout << "栈不为空!" << endl;
            return 1;
        }
    }
    
    int stack::length()
    {
        return top - base;
    }
    
    int stack::push(int a)
    {
        if (top - base == stacksize)
        {
            cout << "栈已满!" << endl;
            return 0;
        }
        *top = a;
        top++;
        return 1;
    }
    
    int stack::pop()
    {
        int s = 0;
        if (top == base)
        {
            cout << "栈为空!" << endl;
            return 0;
        }
        s = *(top - 1);
        top--;
        return s;
    }
    
    char stack::gettop()
    {
        return *(top - 1);
    }
    
    int stack::traverse()
    {
        int* s = top;
        while (s != base)
        {
            cout << *(s - 1) << endl;
            s--;
        }
        if (s == base) cout << endl;
        return 1;
    }
    int stack::sum()
    {
        int sum = 0;
        for (int i = 0; i < length(); i++)
        {
            sum += base[i];
        }
        return sum;
    }
    
    

    源.cpp文件:

    #include <iostream>
    #include "标头.h"
    #include <stdio.h>
    using namespace std;
    
    int main()
    {
        stack OPTR, OPND;
        string str;
        int sum = 0;
        
        cin >> str;
        int lens = str.size();
        char code = '+';
    
        for (int i = 0; i < lens; i++)
        {
            char val = str[i];
            if (val == ' ')
            {
                continue;
            }
            if (val >= '0' && val <= '9')
            {
                int num = 0;
                char val2 = 0;
                while (i < lens ) //修改
                {
                    val2 = str[i];
                    if (val2 >= '0' && val2 <= '9')
                    {
                        num = num * 10 + val2 - '0';
                        i++;
                    }
                    else
                    {
                        break;
                    }
                    
                }
                switch (code) {
                case '+':
                    OPND.push(num);
                    break;
                case '-':
                    OPND.push(-num);
                    break;
                case '*':
                    OPND.push(OPND.pop() * num);
                    break;
                case '/':
                    OPND.push(OPND.pop() / num);
                    break;
                }
            }
            else {
                code = str[i]; //修改
            }
        }
        sum = OPND.sum();
        cout << sum;
        system("pause");
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月3日
  • 已采纳回答 4月25日
  • 创建了问题 4月24日

悬赏问题

  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入