我在讲push的形参类型改为int后也还是不行,还是这几个错误,想知道这几个错误怎么改
2条回答 默认 最新
- 技术专家团-小桥流水 2022-04-25 09:57关注
你的代码中,标头.h文件中,没有声明sum函数,在stack类中添加sum函数的声明,如下:
int sum(); //在标头.h文件的stack类中
代码中还有一些别的错误,代码修改如下:
标头.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; }
解决 1无用
悬赏问题
- ¥15 微信会员卡接入微信支付商户号收款
- ¥15 如何获取烟草零售终端数据
- ¥15 数学建模招标中位数问题
- ¥15 phython路径名过长报错 不知道什么问题
- ¥15 深度学习中模型转换该怎么实现
- ¥15 HLs设计手写数字识别程序编译通不过
- ¥15 Stata外部命令安装问题求帮助!
- ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
- ¥15 TYPCE母转母,插入认方向
- ¥15 如何用python向钉钉机器人发送可以放大的图片?