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[] = ..... ..... ..... .....
Expand|Select|Wrap|Line Numbers
- 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");
- }