如何将输入作为我的代码的一部分?

时间:2015-12-28 00:14:36

标签: c++ math input

所以我有这个数学项目,我必须编写一个程序来计算给定边界内给定函数的定积分。我使用C ++和CodeBlocks完成了这个,但是现在我想尝试使用cmd在CodeBlocks中运行代码时输入函数,就像我输入边界一样,所以我不必编辑这行每次我想为不同的功能运行它时的代码。我意识到这需要实际使用这个输入(例如“sqrt(pow(x,2)-1)”)作为输入时代码的一部分,我真的不知道如何做到这一点,或者它是否是可能的,所以欢迎任何帮助。 这是处理函数的代码部分:

double Formula(double x)
{
    double a;
    a = sqrt(x);
    return a;
}

2 个答案:

答案 0 :(得分:1)

如果你想评估像" sqrt(pow(x,2)-1)"这样的表达式,你必须:

  1. 解析字符串并生成一个AST(抽象语法树),描述要执行的操作
  2. 在AST上使用评估功能
  3. 例如,如果你有" sqrt(pow(x,2)-1)"在输入中,AST可以表示如下:

    • function - sqrt
      • 功能 - 减法
        • 功能 - pow
          • 变量 - x
          • 整数 - 2
        • 整数 - -1

    您必须定义用于表示AST的结构。

    然后,要解析查询字符串,您有两个选择:

    • 自己解析,计算括号等......
    • 使用工具生成解析器:yacc + lex或linux bison + flex。这些工具需要时间来使用它们。

    如果您只有一个小项目要做,您可能必须尝试自己解析输入以生成AST。

    如果项目是一个编译项目,你应该使用bison + flex,它们就是为此做的(但需要时间来使用!)。

答案 1 :(得分:1)

或者,与脚本语言集成,使其进行函数解析和评估。但它会慢得多。

JavaScript解释器遍布各处。 Python也很受欢迎。有些人喜欢Lua。