我正在用C ++编写一个执行一些基本微积分函数的程序。为了创建一个方程来执行这些函数,我使用以下代码:
float equationone(float x)
{
return sqrt(x);
}
float equationtwo(float x)
{
return (x * x);
}
我想知道如何调整我的代码,以便用户输入sqrt(x)
或(x*x)
之类的内容,并让函数返回正确的答案。
答案 0 :(得分:2)
不是那么简单的任务,因为你很快就会想要括号,运算符优先级等等。 您需要创建parser。如果您想学习如何从头创建一个,请尝试查找antlr。您基本上委托了一个工具来创建一个很难手动制作的代码。当然,您需要学习如何编写语法定义,但它可能会在将来支付。相反,如果您需要使用脚本语言在短时间内为真正的客户提供服务,请考虑查看除c ++之外的其他内容。 在Stackoverflow上查看this other reply。
答案 1 :(得分:1)
您需要编写一个解析器来将字符串分解为组件(数字,运算符等),然后使用reverse polish来处理它。该页面包含有关如何转换为中缀表示法以反转波兰表示法的链接。 LEX/YACC可以帮助您完成解析位。