我想问一下这几个错误是什么情况啊,我程序本身应该没有问题,之前有一个思路,改了一个思路,想问一下怎么解决这些错误。
关于一些报错,想知道怎么解决。
我想问一下这几个错误是什么情况啊,我程序本身应该没有问题,之前有一个思路,改了一个思路,想问一下怎么解决这些错误。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 技术专家团-小桥流水 2022-04-25 10:35关注
代码修改如下:
标头.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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 matlab(相关搜索:紧聚焦)
- ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
- ¥15 路易威登官网 里边的参数逆向
- ¥15 Arduino无法同时连接多个hx711模块,如何解决?
- ¥50 需求一个up主付费课程
- ¥20 模型在y分布之外的数据上预测能力不好如何解决
- ¥15 processing提取音乐节奏
- ¥15 gg加速器加速游戏时,提示不是x86架构
- ¥15 python按要求编写程序
- ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入