数值表达式计算

呃,代码写得很差,就不贴了

主要是利用栈来实现

而具体有几个要注意的地方:

  1. 输入格式控制,如何将输入的数字字符串(如:123、123.456……)存放到对应的元素里面,我使用的是istringstream(后面也是根据这个来的),是这次才发现的好东西,用法和cin差不多但是可以用自己的字符串进行输入(这样的话可以使用得更广),至于输入是否正确,是否截止则分别用其方法:fail()、eof()来判断.
  2.  如何将中缀表达式转换成后缀表达式,方法如下(虽然给出,但建议搜百度):1、检测左括号。如无则退回原字符,如有则brankets入栈,opStack入栈。2、输入数字(如果使用了istringstream会很简单)。如成功则将之入sufExp并检测右括号,如无则退回原字符,如有则将opStack中配对的左括号之间的全部入sufExp。如失败则表示非法中缀表达式。3、输入运算符。如成功(是运算符之一,而且能够成合法表达式)则将之入opStack(入opStack的时候要注意其优先级和结合性)。4、输入未结束则继续循环。
  3. 计算后缀表达式的值倒是比较简单,但是要注意返回值的类型(如果你打算做整数模式的话,我的意思是保留整除的性质,当然,如果这样前面构建的时候也得注意一下)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值