标题:分享:中缀表达式转后缀表达式
只看楼主
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
上来看看~到底讨论的是鲁棒性问题~有时为了避免各种bug可能会把代码结构弄得混乱而复杂~当然我相信写得好的在这方面能用尽量简单的方法处理并且不太影响程序的可读性~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-27 20:30
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
回复 11楼 九转星河
完全搞不懂他的程序该怎么用,似乎怎么输入都得不到结果。
无论怎么输入程序都在崩溃。
要不,你试试看能不能得到结果?


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-27 21:15
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
回复 11楼 九转星河
又见鲁棒性,见一次笑一次,好好玩的翻译。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-27 21:21
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:0 
回复 13楼 renkejun1942
你说这个问题我也不知道怎么回事了。vs和codebloks集成ide的能正常编译调试。mingw编译后调试就出错
2017-05-28 07:45
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:0 
这什么问题
2017-05-28 07:47
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
慢慢debug吧,哈,你的程序debug会累死你。
这么短的代码都无法快速定位到错误点。

[此贴子已经被作者于2017-5-28 08:51编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-28 08:49
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:0 
回复 16楼 renkejun1942
没有啊。加一个printf函数去找代码断。2分钟就找到了。代码更新了,测试通过。最开始codebloks是不报错的,玩了会就报错了。。。无语。反正vs是永远不报错,尴尬。
2017-05-28 09:45
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
    if (calc[i] == '(')                //如果是左括号直接进符号栈
            Stackop.op[++Stackop.top] = calc[i];
        else if (calc[i] == ')') {                    //当匹配到右括号出栈
            while (Stackop.op[Stackop.top] != '(')        //如果栈顶是左括号,直接结束,相当于空括号
            {
                rpn[cnt++] = Stackop.op[Stackop.top];    //挨个把括号里面的运算符转换到后缀数组中
                --Stackop.top;
            }               
            --Stackop.top;                        //把匹配到的左括号出栈
        }

虽然我没咋运行过程序~不过看到如果括号数目不匹配就~~建议加个空栈判断处理异常情况而不至于崩溃~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-29 13:29
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
如果按照 表达式角度来说还有一个bug~~~

-+-+123=???

123-+-+-+123=???

这两个表达式是合法的~~~



[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-29 16:20
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
用你现在的代码再次玩了一次,一个回车等于死循环。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-29 17:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-477417-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.094020 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved