How to multiply two matrices in C++
You have already studied how to multiply two matrices in mathematics. Here, I am going to discuss how to multiply two matrices in C++ and its implementation. User is required to enter order of each of the matrices and the given program will calculate its result.
NOTE:-
If one matrix has order m x n and other has order n x o ,then only matrices can be multiplied otherwise not.
C++ code to multiply two matrices
#include<iostream>
using namespace std;
int main()
{
int n,m,n1,m1,i,j,k,sum=0;
int mat1[8][8],mat2[8][8],res[8][8];
cout<<"enter the order of the first matrix"<<endl;
cin>>n>>m;
cout<<"enter first matrix"<<endl;
for(i=0;i<n;i++)
{ for(j=0;j<m;i++)
{
cin>>mat1[i][j];
}
}
cout<<"enter the order of the second matrix"<<endl;
cin>>n1>>m1;
cout<<"enter second matrix"<<endl;
for(i=0;i<n1;i++)
{ for(j=0;j<m1;i++)
{
cin>>mat2[i][j];
}
}
if(m!=n1)
cout<<"matrices cannot be multiplied"<<endl;
for(i=0;i<n;i++)
{ for(j=0;j<m;j++)
{ for(k=0;k<m1;k++)
{
sum+=mat1[i][k]*mat2[k][j];
}
res[i][j]=sum;
sum=0;
}
}
cout<<"Product of the matrices:"<<endl;
for(i =0; i < n; i++){
for(j =0; j < m; j++)
cout<<res[i][j];
cout<<endl;
}
return 0;
}Example1
enter the order of the first matrix 2 3 enter first matrix 1 2 3 4 5 6 enter the order of the second matrix 4 5 matrices cannot be multiplied
Now, what has happened in the example stated above?As I already told you that matrices can be only if order of one matrix is a x b and that of other is c x d, then c must be equal to b.If this condition is not followed, matrices cannot be multiplied in any case.
Example 2
enter the order of the first matrix 3 3 enter first matrix 1 2 3 4 5 6 7 8 9 enter the order of the second matrix 3 2 enter second matrix 1 2 3 4 5 6 product of the matrices: 22 28 49 64 76 100
Now, in this example given above, the condition that I had mentioned was followed. So, program asked user for second matrix values. Then, the program calculated the product of the matrices and the result was printed. Clearly , for the case given in Example 2,output matrix will have order of 3 x 2.
Given program has complexity of O(n x m x m1).
Explanation of my code:
- First of all, I have initialized all the variables.
- User will enter the size of first matrix and its values.
- Similarly, for second matrix , user will input the values.
- Order of first matrix is nxm.
- Order of second matrix is n1xm1.
- Then order of output matrix will be nxm1.
- We will now simply multiply the elements of each of the matrices by taking three for loops.
- Mat1[0,0]*Mat2[0,0]+Mat1[0,1]*Mat2[1,0]+Mat1[0,2]*Mat2[2,0]
- Above equation computes [0,0] element.
- Similarly, we will compute [0,1] element by :
- Mat1[0,0]*Mat2[1,0]+Mat1[0,1]*Mat2[1,1]+Mat1[0,2]*Mat2[2,1]
- This sum that we have computed corresponds to one element of the output matrix.
- Similarly, we can calculate all other elements in the same way and that is what my code is doing.
- At the end, we have to just write two loops to print the output.
So, this was how to multiply two matrices in C++.
Also read,
Leave a Reply