用C++写四则运算的想法(附上源码)
本帖最后由 红头发 于 2014-7-30 14:52 编辑我主要说的内容是如何将输入的string变量(都是字符)转化成可运算的式子
下面是我的做法:
一个string变量中的字串是这种形式的,其中每一个都是字符变量
(34+6)*5=
要怎么变成我们转化成能计算的式子呢?我是这样想的:先将string中的每个字符都配上标识,表明它是数值还是符号(1代表符号,0代表数值)
(34+6)*5=
100101101
这样我就会知道每一位对应的是什么然后我们重新设置一个整形数组newstr来存放这个string关于这个转化,我的想法如下:如果本来是符号,则转化成数值存入newstr并标识上1表明他是运算符;如果有两个0的情况,说明他们应该是一个数字,则把他们合并存入newstr并标识上0;然后就会得到如下的两个数组
(34+6)*5=
40344364142561
10101101
第二行是newstr中的值第三行是标识数组中的值
然后呢之后转化后缀表达式就是数据结构的内容了看看书就可以啦
这是目前我想出来的还算过的去的想法了,完全闭门造车,有其他想法的鱼油欢迎指点哈,一个晚上的结晶啊运行结果如图:附上源码**** Hidden Message *****
让我来人工置顶 确实不错啊O(∩_∩)O~ 感谢楼主分享 顶顶~~我想问如果有小数怎么办?(新手不会C++,还望海涵~~) :funk::funk::funk::funk::funk: w_yc2013 发表于 2014-8-1 13:33
顶顶~~我想问如果有小数怎么办?(新手不会C++,还望海涵~~)
如果是小数,也一样啊,把小数点标上1,表明是符号,然后整形数组声明称double型,再经过算法,把小数存进数组,之后的转化表达式步骤都一样 喵~ >▽< 俺来学习一下 {:7_177:}热爱鱼C^_^ 先将表达式中缀转后缀,然后用堆栈实现最简单不过了 感谢楼主分享{:5_108:} 支持楼主~~~ 看完了楼主的程序,佩服佩服~~~ 今天刚好在想这个问题 名侦探柯南组加油! 拿点钱钱 {:7_148:} 热爱鱼C、 看看...