Program to multiply two Matrix by taking data from user
Last Updated :
22 Mar, 2023
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}}

Implementation:
C++
// C++ program to multiply two matrices.
#include <bits/stdc++.h>
using namespace std;
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++)
cout <<M[i][j] <<" ";
cout << "\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) {
cout << "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
cout << "\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
cout <<"Enter the number of rows of First Matrix: ";
cin >> row1;
cout << row1;
cout << "\nEnter the number of columns of First Matrix: ";
cin >> col1;
cout <<col1;
// Read the elements of Matrix A from user
cout <<"\nEnter the elements of First Matrix: ";
for (i = 0; i < row1; i++) {
for (j = 0; j < col1; j++) {
cout << "\n "<<i << j;
cin >> A[i][j];
cout << A[i][j];
}
}
// Read size of Matrix B from user
cout <<"\nEnter the number of rows of Second Matrix: ";
cin >> row2;
cout << row2;
cout << "\nEnter the number of columns of Second Matrix: ";
cin >> col2;
cout << col2;
// Read the elements of Matrix B from user
cout << "\nEnter the elements of First Matrix: ";
for (i = 0; i < row2; i++) {
for (j = 0; j < col2; j++) {
cout <<"\n "<<i << j;
cin >> B[i][j];
cout << B[i][j];
}
}
// Print the Matrix A
cout << "\n\nFirst Matrix: \n";
printMatrix(A, row1, col1);
// Print the Matrix B
cout << "\nSecond Matrix: \n";
printMatrix(B, row2, col2);
// Find the product of the 2 matrices
multiplyMatrix(row1, col1, A, row2, col2, B);
return 0;
}
// This code is contributed by abhijeet19403.
C
// 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;
}
Java
// Java program to multiply two matrices.
import java.io.*;
import java.util.*;
class GFG{
static int MAX = 100;
// Function to print Matrix
static 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 code
public 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
# 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
C#
// C# program to multiply two matrices.
using System;
class GFG
{
const int MAX = 100;
static void printMatrix(int[,] M, int rowSize, int colSize)
{
for (int i = 0; i < rowSize; i++)
{
for (int j = 0; j < colSize; j++)
Console.Write(M[i, j] + " ");
Console.WriteLine();
}
}
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)
{
Console.WriteLine("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
Console.WriteLine("\nResultant Matrix: ");
printMatrix(C, row1, col2);
}
static void Main(string[] args)
{
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
Console.Write("Enter the number of rows of First Matrix: ");
row1 = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter the number of columns of First Matrix: ");
col1 = Convert.ToInt32(Console.ReadLine());
// Read the elements of Matrix A from user
Console.WriteLine("Enter the elements of First Matrix: ");
for (i = 0; i < row1; i++)
{
for (j = 0; j < col1; j++)
{
Console.Write("[" + i + "][" + j + "] = ");
A[i, j] = Convert.ToInt32(Console.ReadLine());
}
}
// Read size of Matrix B from user
Console.Write("Enter the number of rows of Second Matrix: ");
row2 = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter the number of columns of Second Matrix: ");
col2 = Convert.ToInt32(Console.ReadLine());
// Read the elements of Matrix B from user
Console.WriteLine("Enter the elements of Second Matrix: ");
for (i = 0; i < row2; i++)
{
for (j = 0; j < col2; j++)
{
Console.Write("[" + i + "][" + j + "] = ");
B[i, j] = Convert.ToInt32(Console.ReadLine());
}
}
// Print the Matrix A
Console.WriteLine("\nFirst Matrix: ");
printMatrix(A, row1, col1);
// Print the Matrix B
Console.WriteLine("\nSecond Matrix: ");
printMatrix(B, row2, col2);
// Find the product of the 2 matrices
multiplyMatrix(row1, col1, A, row2, col2, B);
Console.ReadLine();
}
}
JavaScript
// javascript program to multiply two matrices.
let MAX = 100;
// Function to print Matrix
function printMatrix(M, rowSize, colSize)
{
for (let i = 0; i < rowSize; i++) {
for (let j = 0; j < colSize; j++)
process.stdout.write(M[i][j] + " ");
process.stdout.write("\n");
}
}
// Function to multiply two matrices A[][] and B[][]
function multiplyMatrix(row1, col1, A,
row2, col2, B)
{
let i, j, k;
// Matrix to store the result
let C = new Array(MAX);
for(let i = 0; i < C.length; i++){
C[i] = new Array(MAX);
}
// Check if multiplication is Possible
if (row2 != col1) {
process.stdout.write("Not Possible\n");
return;
}
// Multiply the two
for (let i = 0; i < row1; i++) {
for (let 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
process.stdout.write("\nResultant Matrix: \n");
printMatrix(C, row1, col2);
}
// Driven Program
let row1, col1, row2, col2, i, j;
let A = new Array(MAX);
for(let i = 0; i < A.length; i++) A[i] = new Array(MAX);
let B = new Array(MAX);
for(let i = 0; i < B.length; i++) B[i] = new Array(MAX);
// Read size of Matrix A from user
process.stdout.write("Enter the number of rows of First Matrix: ");
row1 = prompt();
console.log(row1);
process.stdout.write("Enter the number of columns of First Matrix: ");
col1 = prompt();
console.log(col1);
// Read the elements of Matrix A from user
console.log("Enter the elements of First Matrix: ");
for (let i = 0; i < row1; i++) {
for (let j = 0; j < col1; j++) {
console.log();
console.log(i + " " + j);
A[i][j] = prompt();
process.stdout.write(A[i][j] + " ");
}
}
// Read size of Matrix B from user
process.stdout.write("\nEnter the number of rows of Second Matrix: ");
row2 = prompt();
process.stdout.write(row2);
process.stdout.write("\nEnter the number of columns of Second Matrix: ");
col2 = prompt();
process.stdout.write(col2);
// Read the elements of Matrix B from user
process.stdout.write("\nEnter the elements of First Matrix: ");
for (i = 0; i < row2; i++) {
for (j = 0; j < col2; j++) {
process.stdout.write("\n " + i + " " + j);
B[i][j] = prompt();
process.stdout.write(B[i][j] + " ");
}
}
// Print the Matrix A
process.stdout.write("\n\nFirst Matrix: \n");
printMatrix(A, row1, col1);
// Print the Matrix B
process.stdout.write("\nSecond Matrix: \n");
printMatrix(B, row2, col2);
// Find the product of the 2 matrices
multiplyMatrix(row1, col1, A, row2, col2, B);
// This code is contributed by Nidhi goel.
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
Complexity Analysis:
- Time Complexity: O(row1 * col2 * row2)
- Auxiliary Space: O(row1 * col2)
Method 2:
We can use the NumPy library in Python to perform matrix multiplication operations and take input from the user.
NOTE: We do not need to explicitly check for the possibility of multiplication of matrices using NumPy, it automatically throws an error if the multiplication is not possible.
Python3
import numpy as np
# Function to multiply two matrices A and B
def multiplyMatrix(A, B):
C = np.dot(A, B)
return C
# Driver Code
if __name__ == "__main__":
# 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: ");
A = np.zeros((row1, col1))
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: ");
B = np.zeros((row2, col2))
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: ")
print(A)
# Print the Matrix B
print("Second Matrix: ")
print(B)
# Find the product of the 2 matrices
C = multiplyMatrix(A, B)
# Print the result
print("Resultant Matrix: ")
print(C)
Output:
console output
Time Complexity: O(n^3)
Space Complexity: O(n^2)
Similar Reads
Program to multiply two matrices Given two matrices, the task is to multiply them. Matrices can either be square or rectangular:Examples: (Square Matrix Multiplication)Input: m1[m][n] = { {1, 1}, {2, 2} }m2[n][p] = { {1, 1}, {2, 2} }Output: res[m][p] = { {3, 3}, {6, 6} }(Rectangular Matrix Multiplication)Input: m1[3][2] = { {1, 1},
7 min read
Javascript Program to multiply two matrices Given two matrices, the task to multiply them. Matrices can either be square or rectangular.Example:Â Input : mat1[][] = {{2, 4}, {1, 4}} mat2[][] = {{1, 4}, {1, 3}} Output : {{6, 16}, {7, 18}} Multiplication of Square Matrices :Â The below program multiplies two square matrices of size 4*4, we can ch
3 min read
Program for scalar multiplication of a matrix Given a 2D matrix mat[][] with n rows and m columns and a scalar element k, the task is to find out the scalar product of the given matrix.Examples: Input: mat[][] = [[2, 3], [5, 4]]k = 5Output: [[10, 15], [25, 20]]Input:mat[][] = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]k = 4Output: [[4, 8, 12], [16, 20, 2
4 min read
Multiplication of Matrix using threads Multiplication of matrix does take time surely. Time complexity of matrix multiplication is O(n^3) using normal matrix multiplication. And Strassen algorithm improves it and its time complexity is O(n^(2.8074)). But, Is there any way to improve the performance of matrix multiplication using the norm
15 min read
Program for addition of two matrices Given two N x M matrices. Find a N x M matrix as the sum of given matrices each value at the sum of values of corresponding elements of the given two matrices. Approach: Below is the idea to solve the problem.Iterate over every cell of matrix (i, j), add the corresponding values of the two matrices
5 min read
Program to concatenate two given Matrices of same size Given two matrices A and B of size M x N, the task is to concatenate them into one matrix.Concatenation of matrix: The process of appending elements of every row of the matrix one after the other is known as the Concatenation of matrix. Examples: Input: A[][] = {{1, 2}, {3, 4}}, B[][] = {{5, 6}, {7,
6 min read