Hi folks,

I'm a beginner in c++. The other day was trying to multiply 2 matrices using friend function. The program did run ,but the result showed some garbage values. plz help..

Code:

#include<iostream.h>
class matrix
{
int a[10][10],b[10][10],d[10][10],r,c,l,m;
public:
void read (void);
void display (void);
friend void multiply1 (matrix m1);
};
void matrix :: read()
{
int i,j;
cout<<"enter r and c of 1st mat"<<"\n";
cin>>r>>c;
cout<<"enter elements\n";
for(i=0;i<r;i++)
for(j=0;j<c;j++)
cin>>a[i][j];
}
void matrix :: display()
{
int i,j;
cout<<"the elements are --"<<"\n";
cout<<"The elements of 1st\n";
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
cout<<a[i][j]<<" ";
}
cout<<"\n";
}
cout<<r; //The value being printed here is right.
}
void multiply1(matrix m1)
{
int i,j,k;
cout<<"\n"<<m1.r; //The value being printed here is always 0 .. :-(
cout<<"\n Enter the dimension (n*m) for the second matrix:";
cin>>m1.l>>m1.m;
cout<<"\n Enter "<< m1.l*m1.m <<" element:";
for(i=0;i<m1.l;i++)
{
for(j=0;j<m1.m;j++)
{
cin>>m1.b[i][j];
}
}
cout<<"The elements of 2nd\n";
for(i=0;i<m1.l;i++)
{
for(j=0;j<m1.m;j++)
{
cout<<m1.b[i][j]<<" ";
}
cout<<"\n";
}
// Multiplication
if(m1.r==m1.m)
{
for(i=0;i<m1.l;i++)
{
for(j=0;j<m1.m;j++)
{
m1.d[i][j]=0;
for(k=0;k<m1.m;k++)
m1.d[i][j]=m1.a[i][k]*m1.b[k][j]+m1.d[i][j];
}
}
cout<<"\n Resultant Matrix:";
for(i=0;i<m1.l;i++)
{
cout<<"\n";
for(j=0;j<m1.m;j++)
cout<<m1.d[i][j]<<"\t";
}
}
}
main()
{
matrix obj,m1,m2;
obj.read();
obj.display();
multiply1(m1);
}

The rows of the first matrix ('r' here) is not being passed into the method 'multiply'. The value of r when i print is showing 0 always. Any idea???