#include <stdio.h>
typedef int (* func_t)(void *,void *,void *, void *);
int add(void * a,void *b){ return (*(int *)a+ *(int *)b);}
int singel(void * a){ return *(int *)a;}
int Square(void * a,void *b){ return (*(int *)a * *(int *)b);}
int Cubic(void * a,void *b, void *c){ return (*(int *)a * *(int *)b * *(int *)c);}
int x4(void * a,void *b, void *c,void *d){ return (*(int *)a * *(int *)b * *(int *)c * *(int *)d);}
void print_result(func_t func){
int a = 1, b=2, c=3, d=4;
printf("%d %d %d \n%d\n",a,b,c,func(&a,&b,&c,&d));
}
int main()
{
print_result((func_t)add);
print_result((func_t)singel);
print_result((func_t)Square);
print_result((func_t)Cubic);
print_result((func_t)x4);
}
typedef int (* func_t)(void *,void *,void *, void *);
int add(void * a,void *b){ return (*(int *)a+ *(int *)b);}
int singel(void * a){ return *(int *)a;}
int Square(void * a,void *b){ return (*(int *)a * *(int *)b);}
int Cubic(void * a,void *b, void *c){ return (*(int *)a * *(int *)b * *(int *)c);}
int x4(void * a,void *b, void *c,void *d){ return (*(int *)a * *(int *)b * *(int *)c * *(int *)d);}
void print_result(func_t func){
int a = 1, b=2, c=3, d=4;
printf("%d %d %d \n%d\n",a,b,c,func(&a,&b,&c,&d));
}
int main()
{
print_result((func_t)add);
print_result((func_t)singel);
print_result((func_t)Square);
print_result((func_t)Cubic);
print_result((func_t)x4);
}