c++ 堆栈四则运算括号操作程序查错的问题

问题描述

c++ 堆栈四则运算括号操作程序查错的问题

这个程序可以输入例如((80+50)*3) 但是为什么会停止工作?这是书上的例程啊...
#include
#include
#include
#include
#include
using namespace std;
double read_and_evaluate(istream& ins);
void evaluate_stack_tops(stack& numbers, stack& operations);

int main()
{
double answer;
cout<<"TYPE expression"<<endl;
answer = read_and_evaluate(cin);
cout << "that evaluates to" << answer << endl;
system("pause");
}

double read_and_evaluate(istream& ins)
{

const char DECIMAL = '.';
const char RIGHT_PARENTHESIS = ')';
stack numbers;
stack operations;
double number;
char symbol;

while(ins && ins.peek()!='n')
{
if(isdigit(ins.peek()) || (ins.peek() == DECIMAL))
{
ins >> number;
numbers.push(number);
}
else if(ins.peek() == RIGHT_PARENTHESIS)
{
ins.ignore();
evaluate_stack_tops(numbers, operations);
}
else
ins.ignore();

}

return numbers.top();
}

void evaluate_stack_tops(stack& numbers, stack& operations)
{
double operand1,operand2;

operand2=numbers.top();
numbers.pop();
operand1=numbers.top();
numbers.pop();

switch(operations.top())
{
case '+': numbers.push(operand1+operand2);
break;
case '-': numbers.push(operand1-operand2);
break;
case '*': numbers.push(operand1 * operand2);
break;
case '/': numbers.push(operand1/operand2);
break;
}
operations.pop();

}

解决方案

要么是堆栈为空了,要么是指针没有处理正确。具体原因调试下。

时间: 2024-11-05 21:49:53

c++ 堆栈四则运算括号操作程序查错的问题的相关文章

ASP中查错之实例(尤其对初学者有帮助)!赖皮,昨天的错误原因找到了,不是你所说的,你不应该吃晚饭的...

初学|错误 ASP中查错之实例有这样一个程序,是对Application集合中的元素进行活动的添加与删除,程序如下:<%@ LANGUAGE=VBSCRIPT %><HTML><HEAD><TITLE>The Application Object</TITLE><STYLE TYPE="text/css">BODY {font-family:Tahoma,Arial,sans-serif; font-size:10

Excel公式如何查错

  Excel公式与函数的同与不同 首先要搞清楚Excel公式和函数这两个概念.什么是公式?就是用加减乘除等运算符号,把一些数值.文本.函数等组合在一起,并有得出一个结果的数学算式.比如下面几个都是公式: =2+5-3*2(常量运算) =a-b/c(变量运算) ="办公便签"&"真不错"(字符运算) =SUM(a,b)*6(函数运算) =A1*B1+C1(包含数值的单元格运算) 那么现在问题来了,什么是函数?它和公式的区别在哪?其实,函数的本质就是公式,不过

Delphi xe4开发的软件, 出现各类型的报错, 求解决或查错方案.

问题描述 Delphi xe4开发的软件, 出现各类型的报错, 求解决或查错方案. 属于2次开发, 程序代码接手后. 在使用途中出现各种报错, 有各种内存报错, 或其他都是非常难重现的错误, 目前安装了EurekaLog, 但仍然无法定位, 会跳到一些莫明其妙的代码上. 程序属于比较大型的. 客户端是DELPHI开发, 服务端是C++开发, 客户端是单个EXE的结构, 带少量第3方的DLL. 更换过fastmm, 用过sharemem之类无效. 程序内部也有多个线程, 且有多个timer. 定位

JS查错小工具-三生有幸【推荐】

H5和CSS语言在开发者官网上都有在线查错工具,同样的,更加复杂的JavaScript也需要一个查错工具,(别指望DreamWeaver了,debug功能做的太垃圾,还不如Firefox自带的强..),所以这里给大家推荐一个网站三生有幸:http://www.3464.com/Tools/JSDebug/也许有更好的网站,不过这一个确实能满足日常需求就是了.

浅谈php错误提示及查错方法_php技巧

php有哪几种错误提示 1.notice : 注意 2.waring : 警告 3.error : 错误 PHP中都有哪几种查错方法? 1.语法检查--php配置文件里,把错误显示选项都打开或者代码开始部分,加error_reporting(E_ALL) 2.逻辑检查--设置断点,在断点前写日志 error_logs($message);exit(); 3.HTTP调试--用抓包工具或者firebugs工具跟踪代码运行的全过程 以上所述上就是本文的全部内容了,希望大家能够喜欢.

UNIX系统管理:网络连接查错

完成这一章,你能做以下事情: 使用下面的命令来检查http://www.aliyun.com/zixun/aggregation/18415.html">网络连接方面的错误: lanscan lanadmin linkloop arp ping netstat -i netstat -a netstat -r hostname nslookup 1.网络查错工具 在UNIX中有如下的工具可以用来进行网络查错: arp (BSD) ping (public domain) netstat (

ASP中查错之实例

有这样一个程序,是对Application集合中的元素进行活动的添加与删除,程序如下:<%@ LANGUAGE=VBSCRIPT %><HTML><HEAD><TITLE>The Application Object</TITLE><STYLE TYPE="text/css">BODY {font-family:Tahoma,Arial,sans-serif; font-size:10pt}INPUT {font-

使用windows vista自带硬盘驱动器查错工具来扫描硬盘驱动器

vista自身携带了一个比较好的使用小工具可以扫描硬盘驱动器查找错误. 具体步骤如下: (1)打开我的"计算机",然后随便找一个盘. (2)属性->工具选项卡->点击 "自动修复文件系统错误"和 "扫描并试图恢复坏扇区"旁边的复选框. (3)这两个我们都可以进行选择.->开始. (4)就这样慢慢等好了,可能要花费一段时间来扫描. (5)扫描完毕后会给出相应的诊断报告. (6)重启计算机.

项目部署、配置、查错常用到的Linux命令

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 一.常用命令 ls 显示文件或目录  -l 列出文件详细信息l(list)  -a 列出当前目录下所有文件及目录,包括隐藏的a(all)  ll 会列出该文件下的所有文件信息,包括隐藏的文件的文件详细信息,使用ls -l -a也可以达到同样效果  mkdir 创建目录  -p 创建目录,若无父目录,则创建p(parent)  cd 切换目录  touch 创建空文件  ca