#include #include using namespace std; typedef double (*FUNDtoD)(double); typedef FUNDtoD TABFUN[]; FUNDtoD funmax(TABFUN,double); double fun0(double x) { return log(x); } double fun1(double x) { return x*x; } double fun2(double x) { return exp(x); } double fun3(double x) { return sin(x); } double fun4(double x) { return cos(x); } int main() { TABFUN tabfun = { fun0, fun1, fun2, fun3, fun4 }; FUNDtoD fun = funmax(tabfun,1); int i; for (i = 0; i < 5; ++i) if (fun == tabfun[i]) break; cout.precision(14); cout << "Najwieksza wartosc dla x=1 ma funkcja nr " << i << ".\nWynosi ona " << fun(1) << endl; } FUNDtoD funmax(TABFUN f, double x) { double m = f[0](x),z; int k = 0; for (int i = 1; i < 5; i++) { if ( (z = f[i](x)) > m) { m = z; k = i; } } return f[k]; }