Program to multiply two Matrix by taking data from user

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

filter_none

edit
close

play_arrow

link
brightness_4
code

// C program to multiply two matrices.
  
#include <stdio.h>
  
const int MAX = 100;
  
// Function to print Matrix
void 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 Program
int 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;
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to multiply two matrices. 
MAX = 100
  
# Function to print Matrix 
def 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 Code
if __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

chevron_right


Output:

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 


My Personal Notes arrow_drop_up

Technical Content Engineer at GeeksForGeeks

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : AnkitRai01