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[] = ..... ..... ..... .....
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[] = ..... ..... ..... .....
Code:
void prob2(void) { FILE *matrix; int k, z, c; double **A, **B, *a, *b; matrix=fopen("matrix.dat", "r"); if(matrix == NULL){ printf("Error in file opening for *matrix.\n"); exit(1); } A= (double **)calloc((size_t)4, sizeof(double *)); B= (double **)calloc((size_t)4, sizeof(double *)); a= (double *)malloc((size_t) 4 * sizeof(double)); b= (double *)malloc((size_t) 4 * sizeof(double)); for(z=0; z<4; z++){ A[z] = (double *)calloc((size_t)4, sizeof(double *)); } for(z=0; z<4; z++) for(c=0; c<4;c++) A[z][c] = (double)z * (double)c; printf("\n"); printf("Matrix A is:\n\n"); for(row=0; row<4; row++){ for(col=0; col<4; col++){ fscanf(matrix, "%lf", A+col); } for(col=0; col<4; col++) printf(" %7.3f", A[col]); printf("\n"); } printf("\nVector a is:\n\n"); for(row=0; row<5; row++){ for(col=0; col<4; col++){ fscanf(matrix, "%lf", A+col); } } printf("a[] = "); for(col=0; col<4; col++) printf(" %7.3f", A[col]); printf("\n"); printf("\n"); printf("Matrix B is: \n\n"); }
Comment