我正在为一个班级写一些儿童数学教育软件。
我将尝试以有趣的方式通过随机生成的不同类型的数学问题向不同技能水平的学生提出问题。
使用基于计算机的数学软件的挫折之一是它的僵化。如果有人参加了在线数学课程,您就会知道参加在线测验并因为您的问题没有完全按照他们的形式或一些奇怪的间距问题而抛出正确答案的挫败感。
所以,最初我想,“我知道!我将在答案框中使用表达式解析器,这样我就可以评估他们输入的任何内容,即使它不是同一种形式,我也可以检查如果答案相同的话。” 所以我启动了我的 IDE 并开始实施Shutting Yard 算法。
这将解决它不采取最小形式的分数的问题和其他问题。
然而,我突然想到,一个棘手的学生可以简单地将大部分问题输入答案框中,而我的表达式解析器会尽职尽责地解析并将其评估为正确答案!
那么,我不应该在这种情况下使用表达式解析器吗?我真的必须生成单一形式的答案并进行字符串比较吗?