Hi

I have been pulling my hair out trying to figure this out. Please help!!!

Here is my project description:

By using a pointer to pointers **A and **B and the function calloc()

allocate the memory for the 4x4 matrices A[][] and B[][].

By using the pointers *a and *b and the function malloc()

allocate the memory for the 4-dimensional vectors a[] and b[].

Read the components of a and A from the given input file matrix.dat

(which is in the public/final directory; you need to copy it into your directory).

The first line of the input file contains the components of a. The rows of

matrix A are the last four lines of the input file. Print the components

of a[] and A[][]. By calling the function pmatrix(A,B,a,b,n), n=4,

which you will construct, determine the components of the matrix B=1.5*A*A, and the

vector b=(A*a)+0.5*a. Print the components of the matrix B and the vector b in the main.

Free dinamically allocated memory.

.................................................. ..............................

Output should look like:

Vector a is:

a[] = -1.200 1.200 -2.000 -0.500

Matrix A is:

2.700 1.500 3.200 2.400

-3.200 0.700 -2.600 4.300

1.400 0.600 2.100 -1.800

1.500 1.700 -2.600 -0.700

Matrix B is:

..... ...... ...... ......

..... ...... ...... ......

..... ...... ...... ......

..... ...... ...... ......

Vector b is:

b[] = ..... ..... ..... .....

My codes and I am stuck.

//void prob3(double ***A, double ***B, double **a, double **b)

void prob3(void)

{

FILE *matrix;

int k;

double ***A, ***B, **a, **b;

matrix=fopen("matrix.dat", "r");

*A= (double**)malloc(sizeof(double*)*4);

*B= (double**)malloc(sizeof(double*)*4);

*a= (double*)malloc(sizeof(double)*4);

*b= (double*)malloc(sizeof(double)*4);

for(k=0; k<4; k++)

{

fscanf(matrix, "%lf %lf %lf %lf", &(*A)[k][0], &(*A)[k][1], &(*A)[k][2], &(*A)[k][3]);

}

for(k=0; k<4; k++)

{

fscanf(matrix, "%lf", &(*a)[k]);

}

matrix1(*A, *B, *a, *b, 4);

}

void problem3()

{

double **A, **B, *a, *b;

int row, col;

printf("\nMatrix B is:\n\n");

for(row=0; row<4; row++)

{

for(col=0; col<4; col++)

{

printf("%.3f ", B[row][col]);

}

}

printf("\nVector b is: \n\n");

printf("a[] = ");

for(col=0; col<4; col++)

{

printf("%.3f ", b[col]);

}

for(row=0; row<4; row++)

{

free(A[row]);

free(B[row]);

}

free(A);

free(B);

free(a);

free(b);

}