#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