如何读取用户定义的数学函数

时间:2013-04-04 17:17:13

标签: function math pascal

我正在尝试在Pascal中构建一个程序来区分数学函数。它工作得很好(计算最小/最大,对称,绘制图形等)但我必须将函数(即x ^ 3 + 3x + 2)放入源代码中,如下所示:

function f(x : real): real;
begin 
   f := x * x * x + 3 * x + 2;
end;

尽管如此,我希望用户定义要区分的功能。显然,readln函数没有帮助。 有人告诉我唯一的解决方案是特定的解析器。但这很困难,我不知道该怎么做。 我的想法是将函数提取到* .txt文件中,以便可以轻松更改。那可能吗? 有人可以给我看一个可以解决这个问题的解析器,还是有其他一些很好的解决方案? 我将衷心感谢您的帮助! 在此先感谢;)

2 个答案:

答案 0 :(得分:0)

Free Pascal附带symbolic包,它包含数学表达式的解析器和赋值器。您可以将此作为起点。有关用法,请参阅documentation

答案 1 :(得分:0)

SWAG上还有许多解析器/评估者:

我把我认为最有用的那些加粗了。在其他答案中,我认为它们中的任何一个都不如符号包那么完整,但如果你需要帮助,它们可能值得一读。

(所有这些都是相当陈旧的代码。除非另有说明,SWAG的规则是将这些东西视为拥有新式BSD许可证)