Matrix Multiplication
Matrix is 2D array in computer science. Take user input for row and colum for matrix A and matrix B. 
Column count of matrix A should match to row count of matrix B else we should return. 
Allocate two 2D dynamic array A and B, first allocate pointes for row elemnets and then allocate columns elements and assign each column pointers to row list.
Now populate elements for matrix A with user input. Then do the same for matrix B.
Now take element[0,0] from A and B and multiply row elements of A to column elements of B and sum up. This sum is the resultant element for position [0,0].
Repeat the same for rest of all positions individually. Thus the resultant matrix is formed.  
Source Code
 #include <stdio.h>
 #include <malloc.h>
 int main(int argc, char* argv[])
 {
   int rows_a = 0, rows_b = 0;
   int cols_a = 0, cols_b = 0;
   int **matrix_a;
   int **matrix_b;
   int r, c, k, sum;
   printf ("== Matrix Multiplication Demo ==\n");
   printf ("Matrix A has rows : ");
   scanf ("%d", &rows_a);
   printf ("Matrix A has columns : ");
   scanf ("%d", &cols_a);
   printf ("Matrix B has rows : ");
   scanf ("%d", &rows_b);
   printf ("Matrix B has columns : ");
   scanf ("%d", &cols_b);
 
   if (cols_a != rows_b) {
     printf ("Cannot multiply these two matrixes!");
     return -1;
   }
 
   matrix_a = (int **) malloc (sizeof(int **)*rows_a);
   for (r = 0; r < rows_a; r++) {
     matrix_a[r] = (int *) malloc(sizeof(int)*cols_a);
   }
   matrix_b = (int **) malloc (sizeof(int **)*rows_b);
   for (r = 0; r < rows_b; r++) {
     matrix_b[r] = (int *) malloc(sizeof(int)*cols_b);
   }
 
   printf ("\nMatrix A\n");
   for (r = 0; r < rows_a; r++) {
     for (c = 0; c < cols_a; c++) {
       printf ("Element [%d][%d] : ", r, c);
       scanf ("%d", &matrix_a[r][c]);
     }
   }
   printf ("\nMatrix B\n");
   for (r = 0; r < rows_b; r++) {
     for (c = 0; c < cols_b; c++) {
       printf ("Element [%d][%d] : ", r, c);
       scanf ("%d", &matrix_b[r][c]);
     }
   }
   printf ("\nMatrix A\n");
   for (r = 0; r < rows_a; r++) {
     printf ("| ");
     for (c = 0; c < cols_a; c++) {
       printf ("%.2d ", matrix_a[r][c]);
     }
     printf (" |");
     printf ("\n");
   }
   printf ("\nMatrix B\n");
   for (r = 0; r < rows_b; r++) {
     printf ("| ");
     for (c = 0; c < cols_b; c++) {
       printf ("%.2d ", matrix_b[r][c]);
     }
     printf (" |");
     printf ("\n");
   }
   printf ("\nMatrix A x B\n");
   for (r = 0; r < rows_a; r++) {
     printf ("| ");
     for (c = 0; c < cols_b; c++) {
       sum = 0;
       for(k = 0; k < cols_a; k++) {
         sum = sum + matrix_a[r][k] * matrix_b[k][c];
       }
       printf ("%.2d ", sum);
     }
     printf (" |");
     printf ("\n");
   }
   return 0;
 }
Output
== Matrix Multiplication Demo ==
Matrix A has rows : 2
Matrix A has columns : 2
Matrix B has rows : 2
Matrix B has columns : 3
Matrix A
Element [0][0] : 1
Element [0][1] : 2
Element [1][0] : 3
Element [1][1] : 4
Matrix B
Element [0][0] : 5
Element [0][1] : 6
Element [0][2] : 7
Element [1][0] : 8
Element [1][1] : 9
Element [1][2] : 10
Matrix A
| 01 02  |
| 03 04  |
Matrix B
| 05 06 07  |
| 08 09 10  |
Matrix A x B
| 21 24 27  |
| 47 54 61  |
About our authors: Team EQA 
You have viewed 1 page out of 252. Your C learning is 0.00% complete. Login to check your learning progress. 
 
          
‹
#
›