Program to multiply two Matrix by taking data from user - GeeksforGeeks

11 Aug, 2021
Given two matrices, the task is to multiply them. The size and number of elements of matrices are to be read from the keyboard.
Examples:  
Input: row1 = 2, col1 = 2,
       mat1[][] = {{1, 2}, 
                   {3, 4}},
       row2 = 2, col2 = 2,
       mat2[][] = {{1, 1}, 
                   {1, 1}}
Output: {{3, 3}, 
         {7, 7}}
Input: row1 = 2, col1 = 2,
       mat1[][] = {{2, 4}, 
                   {3, 4}}
       row1 = 2, col1 = 2,
       mat2[][] = {{1, 2}, 
                   {1, 3}}       
Output: {{6, 16}, 
         {7, 18}}
 
Program:  
C
Java
Python3
// C program to multiply two matrices. #include <stdio.h> const int MAX = 100; // Function to print Matrixvoid printMatrix(int M[][MAX], int rowSize, int colSize){    for (int i = 0; i < rowSize; i++) {        for (int j = 0; j < colSize; j++)            printf("%d ", M[i][j]);         printf("\n");    }} // Function to multiply two matrices A[][] and B[][]void multiplyMatrix(int row1, int col1, int A[][MAX],                    int row2, int col2, int B[][MAX]){    int i, j, k;     // Matrix to store the result    int C[MAX][MAX];     // Check if multiplication is Possible    if (row2 != col1) {        printf("Not Possible\n");        return;    }     // Multiply the two    for (i = 0; i < row1; i++) {        for (j = 0; j < col2; j++) {            C[i][j] = 0;            for (k = 0; k < row2; k++)                C[i][j] += A[i][k] * B[k][j];        }    }     // Print the result    printf("\nResultant Matrix: \n");    printMatrix(C, row1, col2);} // Driven Programint main(){    int row1, col1, row2, col2, i, j;    int A[MAX][MAX], B[MAX][MAX];     // Read size of Matrix A from user    printf("Enter the number of rows of First Matrix: ");    scanf("%d", &row1);    printf("%d", row1);    printf("\nEnter the number of columns of First Matrix: ");    scanf("%d", &col1);    printf("%d", col1);     // Read the elements of Matrix A from user    printf("\nEnter the elements of First Matrix: ");    for (i = 0; i < row1; i++) {        for (j = 0; j < col1; j++) {            printf("\nA[%d][%d]: ", i, j);            scanf("%d", &A[i][j]);            printf("%d", A[i][j]);        }    }     // Read size of Matrix B from user    printf("\nEnter the number of rows of Second Matrix: ");    scanf("%d", &row2);    printf("%d", row2);    printf("\nEnter the number of columns of Second Matrix: ");    scanf("%d", &col2);    printf("%d", col2);     // Read the elements of Matrix B from user    printf("\nEnter the elements of First Matrix: ");    for (i = 0; i < row2; i++) {        for (j = 0; j < col2; j++) {            printf("\nB[%d][%d]: ", i, j);            scanf("%d", &B[i][j]);            printf("%d", B[i][j]);        }    }     // Print the Matrix A    printf("\n\nFirst Matrix: \n");    printMatrix(A, row1, col1);     // Print the Matrix B    printf("\nSecond Matrix: \n");    printMatrix(B, row2, col2);     // Find the product of the 2 matrices    multiplyMatrix(row1, col1, A, row2, col2, B);     return 0;}
// Java program to multiply two matrices.import java.io.*;import java.util.*; class GFG{     static int MAX = 100; // Function to print Matrixstatic void printMatrix(int M[][], int rowSize,                        int colSize){    for(int i = 0; i < rowSize; i++)    {        for(int j = 0; j < colSize; j++)            System.out.print(M[i][j] + " ");         System.out.println();    }} // Function to multiply two matrices A[][] and B[][]static void multiplyMatrix(int row1, int col1,                           int A[][], int row2,                           int col2, int B[][]){    int i, j, k;     // Matrix to store the result    int C[][] = new int[MAX][MAX];     // Check if multiplication is Possible    if (row2 != col1)    {        System.out.println("Not Possible");        return;    }     // Multiply the two    for(i = 0; i < row1; i++)    {        for(j = 0; j < col2; j++)        {            C[i][j] = 0;            for(k = 0; k < row2; k++)                C[i][j] += A[i][k] * B[k][j];        }    }     // Print the result      System.out.println();    System.out.println("Resultant Matrix: ");    printMatrix(C, row1, col2);} // Driver codepublic static void main(String[] args){    Scanner read = new Scanner(System.in);    int row1, col1, row2, col2, i, j;    int A[][] = new int[MAX][MAX];    int B[][] = new int[MAX][MAX];     // Read size of Matrix A from user    System.out.print("Enter the number of " +                     "rows of First Matrix: ");    row1 = read.nextInt();    System.out.println(row1);    System.out.print("Enter the number of " +                     "columns of First Matrix: ");    col1 = read.nextInt();    System.out.println(col1);     // Read the elements of Matrix A from user    System.out.println("Enter the elements " +                       "of First Matrix: ");    for(i = 0; i < row1; i++)    {        for(j = 0; j < col1; j++)        {            System.out.print("A[" + i + "][" +                                    j + "]: ");            A[i][j] = read.nextInt();            System.out.println(A[i][j]);        }    }     // Read size of Matrix B from user    System.out.print("Enter the number of " +                     "rows of Second Matrix: ");    row2 = read.nextInt();    System.out.println(row2);    System.out.print("Enter the number of " +                     "columns of Second Matrix: ");    col2 = read.nextInt();    System.out.println(col2);     // Read the elements of Matrix B from user    System.out.println("Enter the elements " +                       "of First Matrix: ");    for(i = 0; i < row2; i++)    {        for(j = 0; j < col2; j++)        {            System.out.print("A[" + i + "][" +                                    j + "]: ");            B[i][j] = read.nextInt();            System.out.println(B[i][j]);        }    }     // Print the Matrix A    System.out.println();    System.out.println("First Matrix: ");    printMatrix(A, row1, col1);         // Print the Matrix B      System.out.println();    System.out.println("Second Matrix: ");    printMatrix(B, row2, col2);     // Find the product of the 2 matrices    multiplyMatrix(row1, col1, A, row2, col2, B);}} // This code is contributed by Dharanendra L V.
# Python3 program to multiply two matrices.MAX = 100 # Function to print Matrixdef printMatrix(M, rowSize, colSize) :         for i in range(rowSize) :        for j in range(colSize) :            print(M[i][j], end = " ")         print() # Function to multiply two matrices# A[][] and B[][]def multiplyMatrix(row1, col1, A,                   row2, col2, B) :                             # Matrix to store the result    C = [[0 for i in range(MAX)]            for j in range(MAX)]     # Check if multiplication is Possible    if (row2 != col1) :        print("Not Possible")        return         # Multiply the two    for i in range(row1) :        for j in range(col2) :            C[i][j] = 0            for k in range(row2) :                C[i][j] += A[i][k] * B[k][j];     # Print the result    print("Resultant Matrix: ")    printMatrix(C, row1, col2) # Driver Codeif __name__ == "__main__" :     A = [[0 for i in range(MAX)]            for j in range(MAX)]    B = [[0 for i in range(MAX)]            for j in range(MAX)]     # Read size of Matrix A from user    row1 = int(input("Enter the number of rows of First Matrix: "))    col1 = int(input("Enter the number of columns of First Matrix: "))     # Read the elements of Matrix A from user    print("Enter the elements of First Matrix: ");    for i in range(row1) :        for j in range(col1) :            A[i][j] = int(input("A[" + str(i) +                                "][" + str(j) + "]: "))     # Read size of Matrix B from user    row2 = int(input("Enter the number of rows of Second Matrix: "))    col2 = int(input("Enter the number of columns of Second Matrix: "))     # Read the elements of Matrix B from user    print("Enter the elements of Second Matrix: ");    for i in range(row2) :        for j in range(col2) :            B[i][j] = int(input("B[" + str(i) +                                "][" + str(j) + "]: "))     # Print the Matrix A    print("First Matrix: ")    printMatrix(A, row1, col1)     # Print the Matrix B    print("Second Matrix: ")    printMatrix(B, row2, col2)     # Find the product of the 2 matrices    multiplyMatrix(row1, col1, A, row2, col2, B) # This code is contributed by Ryuga
Enter the number of rows of First Matrix: 2
Enter the number of columns of First Matrix: 3
Enter the elements of First Matrix: 
A[0][0]: 1
A[0][1]: 2
A[0][2]: 3
A[1][0]: 4
A[1][1]: 5
A[1][2]: 6
Enter the number of rows of Second Matrix: 3
Enter the number of columns of Second Matrix: 2
Enter the elements of First Matrix: 
B[0][0]: 1
B[0][1]: 2
B[1][0]: 3
B[1][1]: 4
B[2][0]: 5
B[2][1]: 6

First Matrix: 
1 2 3 
4 5 6 

Second Matrix: 
1 2 
3 4 
5 6 

Resultant Matrix: 
22 28 
49 64 
 
Time Complexity: O(row1 * col2 * row2)Auxiliary Space: O(row1 * col2)
ankthon
dharanendralv23
pankajsharmagfg
Algorithms
Matrix
School Programming
Matrix
Algorithms
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
DSA Sheet by Love Babbar
How to Start Learning DSA?
Difference between Algorithm, Pseudocode and Program
K means Clustering - Introduction
Types of Complexity Classes | P, NP, CoNP, NP hard and NP complete
Matrix Chain Multiplication | DP-8
Program to find largest element in an array
Print a given matrix in spiral form
Rat in a Maze | Backtracking-2
Sudoku | Backtracking-7