# 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,mat2,res;
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:

1. First of all, I have initialized all the variables.
2. User will enter the size of first matrix and its values.
3. Similarly, for second matrix , user will input the values.
4.  Order of first matrix is nxm.
5. Order of second matrix is n1xm1.
6. Then order of output matrix will be nxm1.
7. We will now simply multiply the elements of each of the matrices by taking three for loops.
8. Mat1[0,0]*Mat2[0,0]+Mat1[0,1]*Mat2[1,0]+Mat1[0,2]*Mat2[2,0]
9. Above equation computes [0,0] element.
10. Similarly, we will compute [0,1] element  by :
11. Mat1[0,0]*Mat2[1,0]+Mat1[0,1]*Mat2[1,1]+Mat1[0,2]*Mat2[2,1]
12. This sum that we have computed corresponds to one element of the output matrix.
13. Similarly, we can calculate all other elements in the same way and that is what my code is doing.
14. At the end, we have to just write two loops to print the output.

So, this was how to multiply two matrices in C++.