我想做一个有理数计算器,但我不知道如何忽略一些字符。例如,如果程序要计算表达式“2/9+9/3”并且答案应该是非简化形式,那么如何在输入时忽略上面表达式中的'/'?
mohammad bilal
问问题
7194 次
1 回答
4
我认为您需要定义一个了解有理数的语法/解析器。对于您的示例输入,您希望得到一个包含如下内容的解析树:
add(rational(2, 9)
rational(9, 3))
然后,您将编写代码,了解使用有理数进行计算时使用的各种技巧,以便实现该add
操作的代码可以检查其输入参数的最大公约数,并将数字转换为可加数。
在这种情况下,它可能会将参数重写为rational(2, 9)
and rational(27, 9)
,然后进行加法运算,从而以 . 结尾rational(29, 9)
。
您可以有一个单独的函数进行简化,可以将其简化回3+rational(2, 9)
.
于 2009-03-18T10:52:24.193 回答