c++解析公式,由用户提供
C++ Parsing equations provided by the user
我正在用c++编写一个程序来执行一些基本的微积分函数。为了创建一个等式来执行这些函数,我使用以下代码:
float equationone(float x)
{
return sqrt(x);
}
float equationtwo(float x)
{
return (x * x);
}
我想知道如何调整我的代码,以便用户可以输入sqrt(x)
或(x*x)
之类的东西,并让函数返回正确的答案。
这不是一项微不足道的任务,因为您很快就会想要括号、操作符优先级等等。您需要创建一个解析器。如果你想学习如何从头开始创建一个,试着寻找antlr。你基本上是委托一个工具来创建一个代码,而手工编写代码是很不容易的。当然,您需要学习如何编写语法定义,但将来可能会有所回报。相反,如果您需要使用脚本语言在短时间内为真正的客户服务,请考虑使用c++以外的其他语言。看看Stackoverflow上的另一个回复
你需要编写一个解析器来将字符串分解成组件(数字,运算符等),然后使用反向优化来处理它。该页有关于如何转换为中缀表示法以反转波兰表示法的链接。LEX/YACC可以帮助您进行解析。
相关文章:
- C++如何通过用户输入删除列表元素
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 使用用户定义函数的字符串反转
- 用户定义函数中的指针和输入
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 如何只允许用户输入正整数
- C++如何计算用户输入的数字中的偶数位数
- 通过for循环使用用户输入填充列表
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 在C++中,我如何接受不同于同一行的用户输入
- 当用户超过按钮点击限制时报告
- Visual C++(VS2017)中用户定义的转换不明确
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- C++问题:用户认为数字1-100,程序提出问题不超过6次即可得到答案。无法正确
- 当用户键入分隔符时,停止getline()输入
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- RegGetValue在当前用户下找不到名称
- 函数计算用户按下按钮的频率