# 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

 `// C program to multiply two matrices. ` ` `  `#include ` ` `  `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; ` `} `

## Python3

 `# 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 `

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