I was developing a program to find matrix multiplication.
#include <iostream>
using namespace std;
int main()
{
int a=0,b=0,c=0,d=0,e=0;
cout<<"Enter the order of the first matrix A \n\nNumber of Rows : ";
cin>>a;
cout<<"\nNumber of Columns : ";
cin>>b;
cout<<endl;
int matrixA[a][b];
cout<<"Enter the matrix Elements "<<endl;
for(int m=0; m<a; m++)
{
for(int n=0; n<b; n++)
{
cout<<"A ("<< m+1 <<" , "<<n+1<<" ) =";
cin>>matrixA[m][n];
//cout<<",";
}
cout<<endl;
}
////////////////////////// Startup
cout<<"Enter the order of the Second matrix A \n\nNumber of Rows : "<<b;
c=b;
cout<<"\nNumber of Columns : ";
cin>>d;
cout<<endl;
int matrixB[c][d];
cout<<"Enter the matrix Elements "<<endl;
for(int p=0; p<c; p++)
{
for(int q=0; q<d; q++)
{
cout<<"B ("<< p+1 <<" , "<<q+1<<" ) =";
cin>>matrixB[p][q];
//cout<<",";
}
cout<<endl;
}
///////////// initialisting matrixAns
int matrixAns[a][d];
for(int p=0; p<a; p++)
{
for(int q=0; q<d; q++)
{
matrixAns[p][q]=0;
}
}
//////////////////// finding ans
for(int r=0; r<a; r++)
{
for(int s=0; s<d; s++)
{
for(int t=0; t<b; t++)
{
e = matrixA[r][t]*matrixB[t][s];
}
matrixAns[r][s] = e+matrixAns[r][s];
matrixAns[r][s] = e+matrixAns[r][s]; //dont know why i have to add this same code again
}
}
////////////////////// Ans Printing
cout<<"\nMatrix Multiplication Answer \n"<<endl;
for(int h=0; h<a; h++)
{
for(int i=0; i<d; i++)
{
cout<<" "<<matrixAns[h][i]<<" ";
}
cout<<endl;
}
}
And one important thing: this is not my homework or assignment!
The method that I have used works perfectly but it does not give me the right answer until I use this statement twice. (I got this by a trial and error method).
matrixAns[r][s] = e+matrixAns[r][s];
I have also initailised the matrixAns by using a loop (and had set it to 0).
I am new to C++ and want to know what was the error that I got and how the use of the two statements gives me correct answer.
Is there any way to get rid of one of the statements without destroying the app?
You’re not doing the dot products correctly when calculating your answer. You need to multiply individual cells between the two matrices, then sum all those products for an individual cell in your answer.
Your code is only taking the product, in
e, of the last multiplication –matrix[r][b - 1] * matrixB[b - 1][s]– and discarding the first N-1 products. Addinge– this last multiplication – once, or twice or 3 times are all incorrect, though it may appear to work with certain inputs.Your answer loop, with comments:
Change your answer loop to: