求解用户定义的变量方程

时间:2013-05-16 01:47:35

标签: c variables equation solver

C,Python,C ++或Javascript中的答案将非常感谢。 我读了几本书,做了所有的例子。现在我想写一个简单的程序。 但是,我已经遇到了以下障碍:

我的目的是从用户那里得到一个等式并将其保存在变量中, 例如:

-3*X+4 or pow(2,(sin(cos(x))/5))       >  [In valid C Math syntax]

然后计算某个X值的给定表达式。 像这样:

printf("%g", UserFunction(3.2))   // Input 3.2 for X in User's Function and Print Result

有什么想法吗?对于我的生活,我无法弄清楚这一点。令我沮丧的是,解决方案可能只是一个非常简单的解决方案。提前谢谢。

3 个答案:

答案 0 :(得分:11)

C 中没有一种简单的方法可以做到这一点,但我认为muParser可能对您有用,它是用 C ++ 编写的,但是 C 绑定。 ExprTk也是一个选项,但看起来只是 C ++ ,从正面来看,它看起来更容易获得有趣的结果。

另一个选项可能是Expression Evaluation,它是Libav的一部分。它位于 C 中,eval.h标题对接口有一些很好的描述。

答案 1 :(得分:0)

在C,C ++或Java等编译语言中,没有简单的方法可以做到这一点 - 你基本上必须重写整个编译器(或者使用带解释器的外部库)。这在像Python和Javascript这样的“脚本”语言中是微不足道的,它们具有在运行时评估表达式的函数(通常称为“eval()”)。这个函数通常很危险,因为它也可以执行带副作用的调用函数。

答案 2 :(得分:0)

Ffmpeg / libav有一个很好的简单函数求值程序,可以使用。