Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在用 C++ 编写一个程序来执行一些基本的微积分函数。为了创建一个方程来执行这些功能,我使用以下代码:
float equationone(float x) { return sqrt(x); } float equationtwo(float x) { return (x * x); }
我想知道如何调整我的代码,以便用户可以输入sqrt(x)或(x*x)让函数返回正确的答案。
sqrt(x)
(x*x)
这不是一个如此微不足道的任务,因为您很快就会想要括号、运算符优先级等。您需要创建一个解析器。如果您想学习如何从头开始创建一个,请尝试寻找antlr。您基本上委派了一个工具来创建一个远非手动制作的代码。当然,您需要学习如何编写语法定义,但将来可能会有所收获。相反,如果您需要在短时间内使用脚本语言为真正的客户服务,请考虑使用 C++ 以外的其他东西。看看Stackoverflow 上的其他回复 。
您需要编写一个解析器将字符串分解为组件(数字、运算符等),然后使用反向抛光来处理它。该页面包含有关如何将中缀表示法转换为反向波兰表示法的链接。LEX/YACC可以帮助您进行解析。