c++实现计算器

本文介绍了使用C++重新实现一个更简洁的计算器,基于中缀表达式转后缀表达式的方法。通过扫描后缀表达式进行计算,简化了运算过程,避免了处理优先级和括号的问题。文中提供了具体的代码实现,包括操作数栈和运算符处理函数OP。注意,此实现未包含非法表达式的检查,可能导致程序崩溃。
摘要由CSDN通过智能技术生成

  以前写过一个计算器 发表在此博客中(现在已删除)

 

 实现的太过于拉杂,今天再看的时候都不好意思了.代码写的乱七八糟,拉杂不堪,EvaluateExp()看了一会儿都不明白自己是怎吗实现的..估计以前看到这代码的童鞋更加迷茫...嘿嘿.不好意思

    昨天写了一个文章,中缀表达式转后缀表达式, http://blog.csdn.net/qiuchengw/archive/2008/10/04/3016286.aspx

    现在就用这个方式再实现计算器..

    表达式一旦转换成后缀表达式再进行计算就简单的不得了.遇到一个符号就弹出离他最近的两个操作数然后进行这个操作符指定的运算就ok了...运算完成后压栈继续扫描,依次重复...等到操作符没有了.所有的运算也就结束了.结果也就出来了...不必再判断优先级的什么的了.括号什么的也一并省略..爽吧.

    其实在中缀转后缀的时候就可以进行计算,表达式扫描完成,计算完成.

    把昨天的代码直接复制..修改..

  1. opt.push('#');
  2.     int len = exp.length();
  3.     for (int i = 0; i < len;)
  4.     {
  5.         char ch = exp.at(i);
  6.         if (isalnum(ch))
  7.         {
  8.             long num = 0;
  9.             while (isalnum(ch)) //转换为整数
  10.             {
  11.                 num = (ch-
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值