1

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

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

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

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

4

2 回答 2

2

这不是一个如此微不足道的任务,因为您很快就会想要括号、运算符优先级等。您需要创建一个解析器。如果您想学习如何从头开始创建一个,请尝试寻找antlr。您基本上委派了一个工具来创建一个远非手动制作的代码。当然,您需要学习如何编写语法定义,但将来可能会有所收获。相反,如果您需要在短时间内使用脚本语言为真正的客户服务,请考虑使用 C++ 以外的其他东西。看看Stackoverflow 上的其他回复

于 2013-05-24T05:09:57.327 回答
1

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

于 2013-05-24T05:31:18.100 回答