/* Passing function names as arguments */ #include #define ROWSIZE 3 #define COLSIZE 4 main() { double arrmin(double [], int), arrmax(double [], int), sum_square(double (*f)(double [], int), double [][COLSIZE], int, int); double numbers[ROWSIZE][COLSIZE] = {{8, 5, 12, 10}, {2, 7, 2, 6}, {9, 6, 3, 1}}; printf("%s%10.3f\n%s%10.3f\n", "First computation: ", sum_square(arrmin, numbers, ROWSIZE, COLSIZE), "Second computation: ", sum_square(arrmax, numbers, ROWSIZE, COLSIZE)); } double sum_square(double (*f)(double [], int), double darray[][COLSIZE], int m, int n) { int k; double sum = 0.0; for (k =0; k < m; ++k) sum += f(darray[k], n) * f(darray[k], n); return sum; } double arrmin(double val[], int n) { int i; double min = val[0]; for (i = 1; i < n; ++i) if (val[i] < min) min = val[i]; return min; } double arrmax(double val[], int n) { int i; double max = val[0]; for (i = 1; i < n; ++i) if (val[i] > max) max = val[i]; return max; }