#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
#include <windows.h>
int tam (int ord);
int main(){ int filA, filB, colA, colB, i, j, num;
//Signos del español
setlocale (LC_ALL, "spanish");
//Pedir filas y columnas de A y B y delarar matrices
printf ("\n\t TAMAÑO DE LA MATRIZ A"); printf ("\n\t =====================");
filA = tam (1);
colA = tam (2);
int matA [filA][colA];
system ("cls");
printf ("\n\t TAMAÑO DE LA MATRIZ B"); printf ("\n\t =====================");
filB = tam (1);
colB = tam (2);
int matB [filB][colB];
system ("cls");
//Comprobar condición para poder multiplcar las matrices
if (colA==filB){
//Pedir valores de las matrices A y B
printf ("\n\t INSERTE VALORES DE LA MATRIZ A"); printf ("\n\t ============================== \n");
for (i=0; i<filA; i++){ for (j=0; j<colA; j++){ printf ("\n\t Fila %d columna %d: ", i+1, j+1); scanf ("%d", &matA[i][j]); }
}
system ("cls");
printf ("\n\t INSERTE VALORES DE LA MATRIZ B"); printf ("\n\t ============================== \n");
for (i=0; i<filB; i++){ for (j=0; j<colB; j++){ printf ("\n\t Fila %d columna %d: ", i+1, j+1); scanf ("%d", &matB[i][j]); }
}
system ("cls"); //Definir la matriz C
int matC [filA][colB];
//Para que todos los valores sean 0. Necesario para luego
for (i=0; i<filA; i++){ for (j=0; j<colB; j++){ matC[i][j] = 0;
}
}
//Producto. Si no se entiende ver como se multiplican las matrices a mano
for (i=0; i<filA; i++){ for (j=0; j<colB; j++){ //filB == colA, así que dá igual cual poner
for (int k=0; k<filB; k++){ matC [i][j] = matC [i][j] + matA[i][k] * matB[k][j];
}
}
}
//Mostrar matrices A, B y C con un tiempo de retraso para hacer más visual
printf ("\n\t REVISION DE MATRICES Y RESULTADO"); printf ("\n\t ################################");
printf ("\n\n\t Matriz A"); printf ("\n\t ======== \n\t");
for (i=0; i<filA; i++){ for (j=0; j<colA; j++){ printf ("%3d ", matA[i][j]); Sleep (400);
}
printf ("\n\t"); }
Sleep (1000);
printf ("\n\n\t Matriz B"); printf ("\n\t ======== \n\t");
for (i=0; i<filB; i++){ for (j=0; j<colB; j++){ printf ("%3d ", matB[i][j]); Sleep (400);
}
printf ("\n\t"); }
Sleep (1000);
printf ("\n\n\t Matriz C"); printf ("\n\t ======== \n\t");
for (i=0; i<filA; i++){ for (j=0; j<colB; j++){ printf ("%3d ", matC[i][j]); Sleep (400);
}
printf ("\n\t"); }
}
//Si no se cumple el procedimiento, volver a pedir datos de filas y columnas de A y B
else { printf ("\n\t ERROR 281"); printf ("\n\t =========");
printf ("\n\n\t Para poder multiplicar 2 matrices, las columnas de A"); printf ("\n\t tienen que ser igual a las filas de B, con una matriz C"); printf ("\n\t resultante de tamaño filas de A por columnas de B"); }
system (""); return 0;
}
//Función para facilitar la compilacion del codigo. No necesario
int tam (int ord){ int fil, col;
if (ord==1){ printf ("\n\n\t Número de filas: "); scanf ("%d", &fil);
return fil;
}
else if (ord==2){ printf ("\n\t Número de columnas: "); scanf ("%d", &col);
return col;
}
}
Comentarios sobre la versión: Version final 1.0 (0)
No hay comentarios