Hola ! La sig Matriz C resultante del producto de A ( 2 Filas, 3 Columnas ) * B ( 3 Filas, 4 Columnas ) arroja los Valores correctos, pero no logro que la Matriz C salga por pantalla como debe ser, presentada bajo 2 Filas y 4 Columnas ya que es Condición del Producto entre dos Matrices que la Matriz Resultante tenga la misma cantidad de Columnas qude la 1 er Matriz ( Y ) la misma cantidad de Filas qude la 2 da Matriz .
//////
Por otra parte, si me explicaran porqué " el FOR de k " sólo tiene en cuenta las Columnas de A;
¿ No debería de haber a continuación " un FOR de k que recorra las Filas de " B " ????
Lo digo porque:
"i" ( Y ) "j" recorren las Filas y Columnas de " C " ........ y ...
"k" realiza cada Operación recorriendo TANTO las Columnas de " A " ....
...... PERO TAMBIÉN las Filas de " B " !
El Comentario al lado " del FOR de k " lo tomé del razonamiento de quien explicó - súper didácticamente - el Código, pero, " que haya un único FOR de k " no lo entiendo
#include <iostream>
using namespace std;
int main( ){
short int fa, ca, fb, cb, i, j, k;
cout << "Ingrese Nro de Filas de la 1er Matriz: ";
cin >> fa;
cout << "Ingrese Nro de Columnas de la 1er Matriz: ";
cin >> ca;
cout << "Ingrese Nro de Filas de la 2da Matriz: ";
cin >> fb;
cout << "Ingrese Nro de Columnas de la 2da Matriz: ";
cin >> cb;
// DECLARACIÓN DE LAS TRES MATRICES
int A[fa][ca];
int B[fb][cb];
int C[fa][cb];
if ( ca == fb ) { // Si se cumple la Condición " 1 ) " del Producto e/ 2 Matrices se procede ...
// Ingresar Valores de la matriz A
cout << "\n\tIntroduzca los valores de la 1er Matriz: " << endl;
for ( i = 0; i < fa; i++ ) // BUCLE para las Filas " i " de A
// " i < fa " Porque fa va desde fa[0] hasta fa[\0] x lo q a todas las Filas de A le " sobrará fa[\0] "
for ( j = 0; j < ca; j++ ) { // BUCLE para las Columnas " j " de A
// " j < ca " Porque ca va desde ca[0] hasta ca[\0] x lo q a todas las Columnas de A le " sobrará ca[\0] "
cout << "A["<<i<<"]["<<j<<"] :";
cin >> A[i][j];
}
// Ingresar Valores de la matriz B
cout << "\n\tIntroduzca los valores de la 2da Matriz: " << endl;
for ( i = 0; i < fb; i++ ) // BUCLE para las Filas " i " de B
for ( j = 0; j < cb; j++ ) { // BUCLE para las Columnas " j " de B
cout << "B["<<i<<"]["<<j<<"] :";
cin >> B[i][j];
}
// Cálculo de la Matriz C = A * B ( C conformada a partir de Filas de A ( Y ) Columnas de B
for ( i = 0; i < fa; i++ ) // BUCLE para las Filas " i " de A
for ( j = 0; j < cb; j++ ) { // BUCLE para las Columnas " j " de B
C[i][j] = 0;
for ( k = 0; k < ca; k++ ) // PORQUÉ ????? sólo Col de A ...... y las Filas de B ? ; no era que k recorre ambas ??
C [i][j] = C [i][j] + ( A [i][k] * B [k][j] );
}
cout << endl;
for ( i = 0; i < fa; i++ ) // BUCLE para las Filas " i " de A
for ( j = 0; j < cb; j++ ) // BUCLE para las Columnas " j " de B
cout << C[i][j] << " ";
} else cout << "\n\tLA MULTIPLICACIÓN ENTRE AMBAS MATRICES NO SE PUEDE REALIZAR" << endl;
return 0;
}
Gracias x leer el mensaje.
MOD: Modificado el asunto del tema. No escribir todo en mayúsculas.
MOD: Indentar el código para que sea legible.