Function 如何读入用户定义的数学函数

Function 如何读入用户定义的数学函数,function,math,pascal,Function,Math,Pascal,我正在尝试用Pascal编写一个程序来区分数学函数。它可以很好地计算最小/最大、对称性、绘制图形等。但我必须将函数,即x^3+3x+2,放入源代码中,如下所示: function f(x : real): real; begin f := x * x * x + 3 * x + 2; end; 不过,我希望用户定义函数来区分。显然,readln函数没有帮助。 有人告诉我唯一的解决方案是使用特定的解析器。但这很难,我不知道怎么做。 例如,我的想法是将函数提取到一个*.txt文件中,以便可

我正在尝试用Pascal编写一个程序来区分数学函数。它可以很好地计算最小/最大、对称性、绘制图形等。但我必须将函数,即x^3+3x+2,放入源代码中,如下所示:

function f(x : real): real;
begin 
   f := x * x * x + 3 * x + 2;
end;
不过,我希望用户定义函数来区分。显然,readln函数没有帮助。 有人告诉我唯一的解决方案是使用特定的解析器。但这很难,我不知道怎么做。 例如,我的想法是将函数提取到一个*.txt文件中,以便可以轻松地更改它。可能吗? 有人能给我看一个能解决这个问题的解析器吗?或者有人有其他很好的解决方案吗? 我非常感谢你的帮助!
提前感谢

免费的Pascal随软件包一起提供,它有一个用于数学表达式的解析器和求值器。您可能可以将此作为起点。有关用法,请参阅。

上还有许多解析器/evalutaor:

简短、干净的评价者 非常简短的示例代码 没有文件,有点乱 有点神秘。 小的,看起来做得不错。 Messier,包括trig函数。 没有很好的记录 将方程转换为系数数组 相当完整的解析器/计算器单元 我把那些我认为最有用的加粗了。我不认为它们中的任何一个像我的另一个答案中的符号包那样完整,但是如果你需要帮助,它们可能值得一读


所有这些都是相当古老的代码。除非另有说明,否则SWAG的规则是将此内容视为具有新型BSD许可证

不必在标题中添加与标签中相同的信息。这里的标签系统工作得很好,试图通过在主题中添加标签来帮助它只会造成混乱。请不要这样做。谢谢。这里有一些信息:@KenWhite抱歉,我是新来的:youwant.Parser10,由Renate Schaaf编写,由Hallvard Vassbotn更新,是一个数学解析器,适用于您的情况。有关更多详细信息,请参阅。