我想制作一个有理数的计算器,但我不知道如何忽略一些字符。例如,如果程序必须计算表达式“2/9 + 9/3”并且答案应该是未简化的形式,那么在接受输入时如何忽略上述表达式中的“/”?
答案 0 :(得分:4)
我认为您需要定义一个了解有理数的语法/解析器。对于您的示例输入,您最终会得到一个包含以下内容的解析树:
add(rational(2, 9)
rational(9, 3))
然后你编写的代码知道在使用有理数计算时使用的各种技巧,以便实现add
操作的代码可以检查其输入参数的greatest common divisor ,并将数字转换为可添加的。
在这种情况下,它可能会将参数重写为rational(2, 9)
和rational(27, 9)
,然后进行添加,最后得到rational(29, 9)
。
你可以有一个单独的功能来简化,可以简化为3+rational(2, 9)
。