I'm writing a program which takes the elements of two different matrices, then it will multiply them and next it will save them in a multidimensional array. But it only works for square matrix. (Visual Studio 2013 gives no error.) I'll be pleased if you help me edit this code in order to multiply every kind of matrix.
int a, b, c, d;
int Mat1[10][10];
int Mat2[10][10];
int Mat3[10][10];
Back1:
cout << endl << "Enter the number of rows in Matrix 1 : ";
cin >> a;
cout << endl << "Enter the number of columns in Matrix 1 : ";
cin >> b;
cout << endl << "Enter the number of rows in Matrix 2 : ";
cin >> c;
cout << endl << "Enter the number of column in Matrix 2 : ";
cin >> d;
if (b != c) {
cout << endl << "******************************************"
<< "\nThis type of Matrix can't be multiplied . " << endl;
goto Back1;
}
for (int i = 0; i < a; i++) {
for (int j = 0; j < b; j++) {
cout << endl << "(MAT 1 ) \n\nEnter the Element of row " << i + 1
<< " column " << j + 1 << " : ";
cin >> Mat1[i][j];
}
}
for (int i = 0; i < c; i++) {
for (int j = 0; j < d; j++) {
cout << endl << "(MAT 2 ) \n\nEnter the Element of row " << i + 1
<< " column " << j + 1 << " : ";
cin >> Mat2[i][j];
}
}
for (int i = 0; i < a; i++) {
for (int j = 0; j < d; j++) {
Mat3[i][j] = Mat1[i][j] * Mat1[i][j];
}
}
for (int i = 0; i < a; i++) {
for (int j = 0; j < d; j++) {
cout << setw(4) << Mat3[i][j] << setw(4);
}
cout << endl;
}
}
Your code for multiplication of the matrices is wrong. Instead of:
for (int i = 0; i < a; i++)
{
for (int j = 0; j < d; j++)
{
Mat3[i][j] = Mat1[i][j] * Mat1[i][j];
}
}
You need:
for (int i = 0; i < a; i++)
{
for (int j = 0; j < d; j++)
{
Mat3[i][j] = 0;
for (int k = 0; k < c; k++)
{
Mat3[i][j] += Mat1[i][k] * Mat2[k][j];
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With