use*_*757 1 c tree genetic evolutionary-algorithm
我想在C中创建一个函数树,它看起来像这样:http: //scr.hu/5rq/vdja0
所以基本上我希望结果是这样的:http://scr.hu/5rq/f04uu
哪里x是我可以提供的变量(浮动).F0到F6是随机函数,它有两个参数(函数如乘法,加法或给出随机数).所以我的确切问题是:我怎么能这样做?我知道可以通过存储数组中每个函数给出的精确值来轻松完成.但是当谈到获得不同的"x"值时,它会变得复杂.我最初的想法是创建将随机函数附加到树中的每个节点的函数,但是,我不确定应该如何完成构成该树的结构,
typedef struct drzewo typ;
struct drzewo {
typ *right;
typ *left;
typ *up;
float *value; //what to do with this ?
};
Run Code Online (Sandbox Code Playgroud)
我想以某种方式改变行"float*value;" 转换为可以存储函数Function1(left->value,right->value);但未运行的函数,而不是具有给定参数的函数的精确值,以及在何处Function1()或Function2()表示将两个参数分开或将它们相乘的函数.
不,这不是为了学校,是的,这是我使用遗传编程的悲惨尝试.
要创建指向函数的类型,请使用函数原型并将函数名替换为(*<typename>).所以如果你有一个foo看起来像这样的函数:
float foo( int arg1, char *arg2 );
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令创建类型"foo_fn",它是指向foo等函数的指针:
typedef float (*foo_fn)( int, char * );
Run Code Online (Sandbox Code Playgroud)
然后将其存储在您的结构中,如:
typedef struct drzewo typ;
struct drzewo {
typ *right;
typ *left;
typ *up;
foo_fn fn_ptr;
};
Run Code Online (Sandbox Code Playgroud)
如果你想拥有一个包含各种类型函数的结构(可能有不同的返回类型或使用不同的参数),你可能只想将它们存储为void *并在你想要调用它们时将它们转换为正确的函数指针类型.