Sumar Dos Matrices en C

CBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a sumar dos matrices en programación C. El laboratorio cubre los siguientes pasos: leer las dimensiones y los elementos de ambas matrices, sumar los elementos correspondientes y mostrar la matriz resultante. Empezarás creando un programa C para leer las dimensiones y los elementos de la matriz, luego implementarás la lógica de suma de matrices y, finalmente, mostrarás la matriz final. El laboratorio tiene como objetivo proporcionar una experiencia práctica en el trabajo con matrices y álgebra lineal utilizando C.

Lectura de Dimensiones y Elementos de Ambas Matrices

En este paso, aprenderás a leer las dimensiones y los elementos de dos matrices en un programa C. La suma de matrices requiere matrices del mismo tamaño, por lo que primero implementaremos la entrada para las dimensiones y los elementos de las matrices.

Creación del Programa de Suma de Matrices

Primero, crea un nuevo archivo C para la suma de matrices:

cd ~/project
nano matrix_addition.c

Ahora, escribamos el código para leer las dimensiones y los elementos de las matrices:

#include <stdio.h>

#define MAX_SIZE 10

int main() {
    int filas, columnas;
    int matriz1[MAX_SIZE][MAX_SIZE], matriz2[MAX_SIZE][MAX_SIZE];

    // Leer las dimensiones de las matrices
    printf("Ingrese el número de filas (máximo %d): ", MAX_SIZE);
    scanf("%d", &filas);
    printf("Ingrese el número de columnas (máximo %d): ", MAX_SIZE);
    scanf("%d", &columnas);

    // Ingresar elementos para la primera matriz
    printf("Ingrese los elementos de la primera matriz:\n");
    for (int i = 0; i < filas; i++) {
        for (int j = 0; j < columnas; j++) {
            printf("Ingrese el elemento [%d][%d]: ", i, j);
            scanf("%d", &matriz1[i][j]);
        }
    }

    // Ingresar elementos para la segunda matriz
    printf("Ingrese los elementos de la segunda matriz:\n");
    for (int i = 0; i < filas; i++) {
        for (int j = 0; j < columnas; j++) {
            printf("Ingrese el elemento [%d][%d]: ", i, j);
            scanf("%d", &matriz2[i][j]);
        }
    }

    return 0;
}

Compilar y Ejecutar el Programa

Compila el programa:

gcc matrix_addition.c -o matrix_addition

Ejemplo de Salida

Al ejecutar el programa, te pedirá que ingreses las dimensiones y los elementos de las matrices:

Ingrese el número de filas (máximo 10): 2
Ingrese el número de columnas (máximo 10): 3
Ingrese los elementos de la primera matriz:
Ingrese el elemento [0][0]: 1
Ingrese el elemento [0][1]: 2
Ingrese el elemento [0][2]: 3
Ingrese el elemento [1][0]: 4
Ingrese el elemento [1][1]: 5
Ingrese el elemento [1][2]: 6
Ingrese los elementos de la segunda matriz:
Ingrese el elemento [0][0]: 7
Ingrese el elemento [0][1]: 8
Ingrese el elemento [0][2]: 9
Ingrese el elemento [1][0]: 10
Ingrese el elemento [1][1]: 11
Ingrese el elemento [1][2]: 12

Explicación del Código

  • #define MAX_SIZE 10 establece un límite máximo para las dimensiones de la matriz.
  • scanf() se utiliza para leer las entradas de enteros para filas, columnas y elementos de la matriz.
  • Los bucles for anidados se utilizan para ingresar los elementos de ambas matrices.
  • El programa asegura que las dimensiones de la matriz estén dentro del tamaño máximo definido.

Suma de Elementos Correspondientes

En este paso, aprenderás cómo sumar los elementos correspondientes de dos matrices y almacenar el resultado en una nueva matriz.

Actualización del Programa de Suma de Matrices

Abre el archivo C anterior:

cd ~/project
nano matrix_addition.c

Modifica el programa para sumar los elementos de las matrices:

#include <stdio.h>

#define MAX_SIZE 10

int main() {
    int filas, columnas;
    int matriz1[MAX_SIZE][MAX_SIZE], matriz2[MAX_SIZE][MAX_SIZE], resultado[MAX_SIZE][MAX_SIZE];

    // El código de entrada anterior permanece igual
    // ... (entrada de dimensiones y elementos de matriz1 y matriz2)

    // Suma de elementos correspondientes
    printf("\nMatriz Resultante (Matriz1 + Matriz2):\n");
    for (int i = 0; i < filas; i++) {
        for (int j = 0; j < columnas; j++) {
            resultado[i][j] = matriz1[i][j] + matriz2[i][j];
            printf("%d ", resultado[i][j]);
        }
        printf("\n");
    }

    return 0;
}

Compilar y Ejecutar el Programa

Compila el programa actualizado:

gcc matrix_addition.c -o matrix_addition

Ejecuta el programa:

./matrix_addition

Ejemplo de Salida

Ingrese el número de filas (máximo 10): 2
Ingrese el número de columnas (máximo 10): 3
Ingrese los elementos de la primera matriz:
Ingrese el elemento [0][0]: 1
Ingrese el elemento [0][1]: 2
Ingrese el elemento [0][2]: 3
Ingrese el elemento [1][0]: 4
Ingrese el elemento [1][1]: 5
Ingrese el elemento [1][2]: 6
Ingrese los elementos de la segunda matriz:
Ingrese el elemento [0][0]: 7
Ingrese el elemento [0][1]: 8
Ingrese el elemento [0][2]: 9
Ingrese el elemento [1][0]: 10
Ingrese el elemento [1][1]: 11
Ingrese el elemento [1][2]: 12

Matriz Resultante (Matriz1 + Matriz2):
8 10 12
14 16 18

Explicación del Código

  • Se crea una nueva matriz bidimensional resultado para almacenar la suma de los elementos de las matrices.
  • Los bucles for anidados iteran a través de cada elemento de ambas matrices.
  • resultado[i][j] = matriz1[i][j] + matriz2[i][j] suma los elementos correspondientes.
  • printf() se utiliza para mostrar la matriz resultante.

Impresión de la Matriz Resultante

En este paso, aprenderás cómo formatear e imprimir la matriz resultante de una manera limpia y legible.

Mejorar la Función de Impresión de Matrices

Abre el archivo C anterior:

cd ~/project
nano matrix_addition.c

Actualiza el programa con una función dedicada para imprimir matrices:

#include <stdio.h>

#define MAX_SIZE 10

// Función para imprimir la matriz
void printMatrix(int matrix[MAX_SIZE][MAX_SIZE], int rows, int cols, const char* matrixName) {
    printf("%s:\n", matrixName);
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            printf("%4d ", matrix[i][j]);
        }
        printf("\n");
    }
    printf("\n");
}

int main() {
    int rows, cols;
    int matrix1[MAX_SIZE][MAX_SIZE], matrix2[MAX_SIZE][MAX_SIZE], result[MAX_SIZE][MAX_SIZE];

    // El código de entrada anterior permanece igual
    // ... (entrada de dimensiones y elementos de matriz1 y matriz2)

    // Suma de elementos correspondientes
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            result[i][j] = matrix1[i][j] + matrix2[i][j];
        }
    }

    // Impresión de matrices
    printMatrix(matrix1, rows, cols, "Primera Matriz");
    printMatrix(matrix2, rows, cols, "Segunda Matriz");
    printMatrix(result, rows, cols, "Matriz Resultante (Matriz1 + Matriz2)");

    return 0;
}

Compilar y Ejecutar el Programa

Compila el programa actualizado:

gcc matrix_addition.c -o matrix_addition

Ejecuta el programa:

./matrix_addition

Ejemplo de Salida

Ingrese el número de filas (máximo 10): 2
Ingrese el número de columnas (máximo 10): 3
Ingrese los elementos de la primera matriz:
Ingrese el elemento [0][0]: 1
Ingrese el elemento [0][1]: 2
Ingrese el elemento [0][2]: 3
Ingrese el elemento [1][0]: 4
Ingrese el elemento [1][1]: 5
Ingrese el elemento [1][2]: 6
Ingrese los elementos de la segunda matriz:
Ingrese el elemento [0][0]: 7
Ingrese el elemento [0][1]: 8
Ingrese el elemento [0][2]: 9
Ingrese el elemento [1][0]: 10
Ingrese el elemento [1][1]: 11
Ingrese el elemento [1][2]: 12

Primera Matriz:
   1    2    3

Segunda Matriz:
   7    8    9

Matriz Resultante (Matriz1 + Matriz2):
   8   10   12

Explicación del Código

  • Se crea la función printMatrix() para imprimir matrices con un formato consistente.
  • El especificador de formato %4d asegura una impresión de columnas alineada.
  • La función recibe la matriz, las dimensiones y un nombre como parámetros.
  • Las matrices se imprimen con encabezados descriptivos.
  • Los bucles anidados iteran a través de los elementos de la matriz para la impresión.

Resumen

En este laboratorio, aprendiste cómo leer las dimensiones y los elementos de dos matrices en un programa C. Este es un paso esencial para la suma de matrices, ya que requiere matrices del mismo tamaño. Implementaste la entrada para las dimensiones y los elementos de la matriz, asegurando que el programa pueda manejar matrices de hasta un tamaño máximo de 10x10.

Después de leer las dimensiones y los elementos de la matriz, el siguiente paso es sumar los elementos correspondientes de las dos matrices y almacenar la matriz resultante.