Producto de matrices en C

Producto de matrices en C (multiplicación)

Resumen: obtener el producto de matrices en C desarrollando el algoritmo con ciclos for y almacenar el resultado en una nueva matriz, validando las filas y columnas.

Hoy vamos a resolver un ejercicio matemático en C que trata sobre la multiplicación de matrices. El algoritmo es muy sencillo pero para ello primero debemos saber cómo se multiplican las matrices.

Si no sabes cómo multiplicar matrices manualmente puedes ver este enlace de Geogebra en donde se muestra que para multiplicar dos matrices, el número de columnas de la primera matriz debe ser igual al número de filas de la segunda matriz.

Multiplicación de matrices en C

En ocasiones voy a llamar a la primera matriz A, y a la segunda B.

Para obtener el producto de matrices en C comenzamos recorriendo cada columna de la segunda matriz. Dentro de ese ciclo recorremos cada fila de la primera matriz y dentro de ese ciclo recorremos cada columna (celda) de la primera matriz.

Es decir, recorremos la primera matriz normalmente, en x e y. Pero eso lo colocamos dentro de un ciclo que recorre las filas de B.

Finalmente en cada iteración paso sumamos los productos de toda la fila y lo acomodamos en la matriz resultante.

Producto de matrices en C – Código

Una vez dicho esto veamos el código. Primero definimos nuestras matrices y hacemos la validación:

Si se pasa la validación entonces definimos una matriz del mismo tamaño de B:

Hacemos los 3 ciclos y dentro vamos acomodando los valores en la matriz producto:

Fíjate que en la línea 9 multiplicamos lo que hay en A[i][j] por lo que hay en B[j][a], es decir, j se repite pero en el primer caso como fila y en el segundo como columna.

Finalmente imprimimos la matriz:

Poniendo todo junto

El código completo queda así:

Puedes probarlo en línea justo aquí. Los valores de la matriz y el resultado coinciden con los del enlace que dejé al principio.

En mi caso el resultado se ve así:

Producto de matrices en C
Ejecutando programa en C para multiplicar matrices y almacenar el resultado en otra matriz

¿Más ejercicios de C? click aquí.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

7 comentarios en “Producto de matrices en C (multiplicación)”

  1. Al código se deberá corregir algunas líneas como esta
    #include

    #define FILAS_MATRIZ_A 2
    #define COLUMNAS_MATRIZ_A 3
    #define FILAS_MATRIZ_B 3
    #define COLUMNAS_MATRIZ_B 1

    int main(void) {

    int matrizA[FILAS_MATRIZ_A][COLUMNAS_MATRIZ_A] = {
    {1, 2, 2},
    {3, 2, 2},

    };
    int matrizB[FILAS_MATRIZ_B][COLUMNAS_MATRIZ_B] = {
    {1,},
    {2,},
    {1,},
    };

    if (COLUMNAS_MATRIZ_A != FILAS_MATRIZ_B) {
    printf(“Columnas de matriz A deben ser igual a filas de matriz B”);
    return 0;
    }
    //Lugar en donde se almacena el resultado
    int producto[FILAS_MATRIZ_A][COLUMNAS_MATRIZ_B];

    // Necesitamos hacer esto por cada columna de la segunda matriz (B)
    for (int a = 0; a < FILAS_MATRIZ_A; a++) {
    // Dentro recorremos las filas de la primera (A)
    for (int i = 0; i < COLUMNAS_MATRIZ_B; i++) {
    int suma = 0;
    // Y cada columna de la primera (A)
    for (int j = 0; j < COLUMNAS_MATRIZ_A; j++) {
    // Multiplicamos y sumamos resultado
    suma += matrizA[a][j] * matrizB[j][i];
    }
    // Lo acomodamos dentro del producto
    producto[a][i] = suma;
    }
    }

    // Recorrer producto
    printf("Imprimiendo producto\n");
    for (int i = 0; i < FILAS_MATRIZ_A; i++) {
    for (int j = 0; j < COLUMNAS_MATRIZ_B; j++) {
    printf("%d ", producto[i][j]);
    }
    printf("\n");
    }
    }

  2. Buenas me sirvió el código, pero creo que tiene un error. Donde se crea la variable “producto” en la asignación de filas y cuando recorre para imprimir valores están con “FILAS_MATRIZ_B”, cuando tendría que ser con “FILAS_MATRIZ_A”. Ya que el producto de matrices es el numero de filas en A y el numero de columnas en B.
    Saludos!

    1. Habría que cambiar en esas dos líneas el “FILAS_MATRIZ_B” por “FILAS_MATRIZ_A”. En el ejemplo que pusiste no se nota porque las filas de A y B son las mismas, pero si cambias el numero de filas en “FILAS_MATRIZ_A” (por ejemplo) estaría recorriendo mal la matriz “producto”.

    2. Bueno, deje dos comentarios pero ahora solo veo uno, así que por las dudas lo vuelvo a mandar.
      Seria la linea 33 y 52.
      Habría que cambiar en esas dos líneas el “FILAS_MATRIZ_B” por “FILAS_MATRIZ_A”. En el ejemplo que pusiste no se nota el error porque las filas de A y B son las mismas, pero si cambias el numero de filas en “FILAS_MATRIZ_A” (por ejemplo) estaría recorriendo mal la matriz “producto”.

Dejar un comentario