有没有办法从黑色cmd屏幕(stdin)输入函数?

有没有办法从黑色cmd屏幕(stdin)输入函数?,c,C,我被要求编写一个使用黎曼和数值计算积分的程序。我结束了这段代码(感谢上帝),但我想更进一步:从黑色cmd屏幕添加函数 但我似乎找不到任何方法来做这件事。我浏览了好几吨书,但似乎什么也找不到 #include <stdio.h> #include <math.h> #include <stdlib.h> #include <string.h> double mulfun (double x) { /*I want to add functio

我被要求编写一个使用黎曼和数值计算积分的程序。我结束了这段代码(感谢上帝),但我想更进一步:从黑色cmd屏幕添加函数

但我似乎找不到任何方法来做这件事。我浏览了好几吨书,但似乎什么也找不到

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
double mulfun (double x) {
    /*I want to add function from the black screen here*/
    double q = (x*x+5*x+1); //but you can change q to any functions you want
    double s = exp(x)*q; //this is basically homework :)
    return s;
}
double polynomial(double x) {
    int u;
    printf("Insert degree of this polynomial?\t");
    scanf("%d", &u);
    u = u + 1;
    float z[u];
    int k;
    for (k = u - 1; k <= 0; k-- ) {
        printf("\nInsert term of x^%d\t",z[k]);
        scanf("%f%*c", &z[k]);
    }
    double s = z[0];
    for (k=1; k<(u); k++) {
        s = s + z[k]*pow(x,k);
    }
    return s;
}
double riemann (double (*f) (double), double a, double b, double n) {
    double delta, s = 0;
    int i;
    delta = (b - a)/(double)n;
    for (i = 0; i < n; i++) {
        s = s + delta*(f(a + i*delta + delta/2));
    };
    return s;
}
/*mulfun is the function where you add your functions in*/
void main() {
/* a is the lower-bound, b is the upper-bound, n is number of parts
inteval [a, b] is divided into*/
    float a, b, n;
    scanf("%f", &a);
    scanf("%f", &b);
    scanf("%f", &n);
    double e = riemann (mulfun, a, b, n);
    printf("%f", e);
    getch();
}
#包括
#包括
#包括
#包括
双mulfun(双x){
/*我想在这里添加来自黑屏的函数*/
double q=(x*x+5*x+1);//但是您可以将q更改为您想要的任何函数
双s=exp(x)*q;//这基本上是家庭作业:)
返回s;
}
双多项式(双x){
国际大学;
printf(“插入此多项式的次数?\t”);
scanf(“%d”和“&u”);
u=u+1;
浮动z[u];
int k;

for(k=u-1;k在某些语言中,您所询问的内容被称为
eval()
函数,或者更一般地称为
evaluation
。例如,在Perl中,您可以调用
eval(STRING)
,其中
STRING
是一个任意字符串,例如,用户提供作为输入的字符串,就像您想要做的那样,
STRING
将被解释为Perl代码并作为Perl代码执行

这是一个概要。需要考虑很多细节,如范围、退出状态、异常处理、安全性等。即使语言提供了<代码> Value>(代码)>函数,它还是很棘手的;它本身充满了陷阱和锋利的边缘。 但是,C没有一个等价于

eval()
。我发布这个答案的主要目的是为您提供一个进行进一步研究的常用术语。知道您所谈论的是一类编程任务,这些任务通常被称为
eval
evaluation
,可以帮助您集中精力进行研究


e、 例如,这里有一个地方可以开始:

您需要编写一个函数来接受特定格式的输入,然后编写一个通用函数来接受处理后的输入(例如系数数组),并使用输入参数对其进行计算。您有两个选项:要么有一个预定义(硬编码)的列表函数,并允许用户只输入直接映射到内置函数的特定字符串(例如,输入
“cos”
将调用内置的
cos
函数),或构建您自己的微型(?)编程语言,允许定义函数。@ForceBru我认为第二个选项对我来说太难了:)第一个是:)@ForceBru或嵌入一个现有的。@FedericoklezCulloca,是的,类似Lua。可以将输入解析为AST,然后让
riemann
使用该AST并模拟对该函数的调用。或者更简单:推导函数的签名,让
riemann
执行调用t的Lua代码他用黎曼提供的参数运行……太棒了!非常感谢!