c++解析公式,由用户提供

C++ Parsing equations provided by the user

本文关键字:用户 c++      更新时间:2023-10-16

我正在用c++编写一个程序来执行一些基本的微积分函数。为了创建一个等式来执行这些函数,我使用以下代码:

float equationone(float x)
{
    return  sqrt(x);
}
float equationtwo(float x)
{
    return (x * x);
}

我想知道如何调整我的代码,以便用户可以输入sqrt(x)(x*x)之类的东西,并让函数返回正确的答案。

这不是一项微不足道的任务,因为您很快就会想要括号、操作符优先级等等。您需要创建一个解析器。如果你想学习如何从头开始创建一个,试着寻找antlr。你基本上是委托一个工具来创建一个代码,而手工编写代码是很不容易的。当然,您需要学习如何编写语法定义,但将来可能会有所回报。相反,如果您需要使用脚本语言在短时间内为真正的客户服务,请考虑使用c++以外的其他语言。看看Stackoverflow上的另一个回复

你需要编写一个解析器来将字符串分解成组件(数字,运算符等),然后使用反向优化来处理它。该页有关于如何转换为中缀表示法以反转波兰表示法的链接。LEX/YACC可以帮助您进行解析。