It is wanted of me to implement the following function:

```
void calc ( double* a, double* b, int r, int c, double (*f) (double) )
```

Parameters a, r, c and f are input and b is output. “a” and “b” are two-dimensional matrices with “r” rows and “c”

columns. “f” is a function pointer which can point to any function of the following type:

```
double function‐name ( double x ) {
…
}
```

Function `calc`

converts every element in matrix a, i.e., aij, to bij=f(aij) in matrix b.

I implement the `calc`

function as follows, and put it in a program to test it:

```
#include <stdlib.h>
#include <iostream>
using namespace std;
double f1(double x){
return x * 1.7;
}
void calc (double* a, double* b, int r, int c, double (*f) (double))
{
double input;
double output;
for(int i=0; i<r*c; i++)
{
input = a[i];
output = (*f)(input);
b[i] = output;
}
}
int main()
{
// Input array:
int r=3;
int c=4;
double* a = new double[r*c];
double* b = new double[r*c];
// Fill "a" with test data
//...
for (int i=0; i<r*c; i++)
{
a[i] = i;
}
// Transform a to b
calc(a, b, r, c, f1);
// Print to test if the results are OK
//...
for (int i=0; i<r*c; i++)
{
b[i] = i;
}
return 0;
}
```

The problem is, I can't compile it. This is the output of *DevC++* when I click on *Compile and Execute* button:

What's wrong?

I appreciate any comment to make the implementation more efficient.

## Best Answer

As mentioned in a previous reply, this generally comes when compiling copy pasted code. If you have a Bash shell, the following command generally works: