9

非常感谢 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

有任何想法吗?对于我的生活,我无法弄清楚这一点。更令我沮丧的是,解决方案可能非常简单。先感谢您。

4

3 回答 3

13

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

另一种选择可能是表达式评估,它是Libav的一部分。它在C 语言中,并且eval.h标头对接口有一些很好的描述。

于 2013-05-16T01:52:57.473 回答
0

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

于 2013-05-16T02:00:30.180 回答
0

Ffmpeg/libav 有一个不错的简单函数评估器,您可以使用它。

于 2013-05-16T02:29:54.247 回答