[问题] 如何在中置式转后置式中间加空格

楼主: november1121 (嘎乐 K.O)   2015-04-07 11:15:59
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
我目前已完成了中置运算式转后置运算式的程式码 但我想在算式之间穿差空格 该如何
该如何变化?
喂入的资料(Input):
12+12+13
A+B
预期的正确结果(Expected Output):
12 12 + 13 +
A B +
错误结果(Wrong Output):
1212+13+
AB+
程式码(Code):(请善用置底文网页, 记得排版)
http://ideone.com/YedF6N
补充说明(Supplement):
程式码有点长 所以贴于网址中
作者: Caesar08 (Caesar)   2015-04-07 12:20:00
(纯好奇)你都会转了,却不会加空格?
作者: springman (司布林)   2015-04-07 13:19:00
您如果只是要加空格的话,不就在您的 %c 后面加个空格就可以。只是我与前面网友其实有同样的好奇。另外您的写法好像只是转换,无法算出运算式的值。
作者: Feis (永远睡不着 @@)   2015-04-07 22:30:00
提示: 不是每个都要加. 还有的地方可能要额外加
作者: springman (司布林)   2015-04-08 04:43:00
不然您就在 + - * / 后面那个输出 %c 前后都加空格就好不过这样好像也不行,中序可以这样做,后序就不行了。正常的做法是您在转换之前需要先将每个算子切出来这样您才能够在算子之间加空格,您似乎没有切算子应该是在读到运算子时要记录一下,之后要输出算子时就加个空格,运算子后面也加个空格。我好像应该改看看可以 work,我试过了。在'\0'与+-*/后那个 %c 前面加个空格。default 那个就是要记录是否算子再决定是否加空格。“是否运算子之后再决定是否加空格”才对。
作者: Feis (永远睡不着 @@)   2015-04-08 07:59:00
另一个写法就是 default 那个不加, 在运算子处理就好
作者: springman (司布林)   2015-04-08 08:00:00
可是 postfix 会有出现连续算子的情形
作者: Feis (永远睡不着 @@)   2015-04-08 08:47:00
那没关系
作者: s4300026 (s4300026)   2015-04-08 23:35:00
侦测到运算子立刻加空白,输出运算子前后加空白。不好意思,修正一下,输出运算子前加空白即可,后免加。
作者: springman (司布林)   2015-04-13 12:18:00
如果只针对您的case,只要 case ')' 那个输入改成" %c"62 行的 printf("%c",stack[top]); %c 前加个空格即可

Links booklink

Contact Us: admin [ a t ] ucptt.com