C Language Question Dynamic Memory Allocation Revisit the ma
C Language Question:
Dynamic Memory Allocation
Revisit the matrix addition function. Write the program so that it would not need to take a third pointer for the result matrix. Instead, have the function return a pointer to the results matrix. Provide space for the results matrix inside of the function through dynamic memory allocation.
Solution
#include <stdio.h>
main(){
//create matrix pointers
 int *mat1=0, *mat2=0, *mat3, i,j;
 int rows=3,cols=3;
 int *add(int *mat1, int *mat2, int rows, int cols);
 printf(\"\  valus for matrix1:\");
 //accept values for matrix 1
 mat1 =(int*) malloc(sizeof(int)*rows*cols);
 for (i=0;i<rows ;i++ )
 {
    for(j=0;j<cols;j++){
    scanf(\"%d\",mat1+i*cols+j);
    }
 }
 printf(\"\  values for matrxi2\");
 //accept valus for matrix2
 mat2 =(int*) malloc(sizeof(int)*rows*cols);
 for (i=0;i<rows ;i++ )
 {
    for(j=0;j<cols;j++){
    scanf(\"%d\",mat2+i*cols+j);
    }
 }
mat3=(int*) malloc(sizeof(int)*rows*cols);
     mat3=add(mat1,mat2,rows,cols);
     printf(\"addition of two matrices\");
     for(i=0;i<rows;i++)
     {
         for(j=0;j<cols;j++)
         {
             printf(\"%d \",*(mat3+i*cols+j));
         }
     }
}
 int * add(int *mat1,int *mat2,int rows,int cols)
 {
     int *mat3=(int*) malloc(sizeof(int)*rows*cols);
     int i,j,k,a1;
     for(i=0;i<rows;i++)
     {
         for(j=0;j<cols;j++)
         {
             a1=*(mat1+i*cols+j)+*(mat2+i*cols+j);
             *(mat3+i*cols+j)=a1;
         }
     }
     return mat3;
 }


