0

可能重复:
什么是快速 C 或 Objective-C 数学解析器?

我可以使用什么函数代码将动态字符串转换为表达式并对其进行评估?

#include <stdio.h>
#include <conio.h>
#include <string.h>
int main() {
  char var1[] = "3";
  char var2[] = "2";
  char var3[] = "5";
  char exp[20]  = "";
  int result;

  // Trying to create a random expression "(3+2)*5" 
  strcat(exp, "( ");
  strcat(exp, var1);
  strcat(exp, " + ");  
  strcat(exp, var2);  
  strcat(exp, " ) * ");  
  strcat(exp, var3);    

  result = somefunction(exp);

  printf("Result : %i\n", result);
  return 0;
}
4

2 回答 2

3

您必须解析字符串并对其进行评估 - 这远非微不足道,抱歉。但是您可以在这里看到一个工作示例

于 2012-12-13T19:47:06.903 回答
0

您正在谈论编写解析器。您的第一步是找出该解析器的规则。

如果您将它们简单地定义为“从左到右评估所有数学,括号优先”,那么这并不是非常困难。但这显然会为“1+2*3”产生一些意想不到的结果。

如果您可以选择,反向抛光符号计算器更容易实现。如果您没有该选项,您可能需要解析成一棵树才能开始,然后以“从叶到根”的顺序进行评估。

于 2012-12-13T19:59:35.483 回答