Restar Dos Matrices en C

CBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a restar dos matrices en un programa C. El laboratorio cubre los siguientes pasos:

En primer lugar, aprenderás a leer las dimensiones y los elementos de dos matrices a partir de la entrada del usuario. Crearás un programa C que solicite al usuario el número de filas y columnas, y luego los elementos de las dos matrices.

A continuación, implementarás la operación de resta de matrices, donde restarás los elementos correspondientes de las dos matrices y almacenarás el resultado en una nueva matriz. Finalmente, aprenderás a imprimir la matriz resultante.

Lectura de Dimensiones y Elementos

En este paso, aprenderás a leer las dimensiones y los elementos de una matriz desde la entrada del usuario en un programa C para la resta de matrices. Crearemos un programa que permita a los usuarios introducir el tamaño y los valores de dos matrices.

Primero, creemos un nuevo archivo C para nuestro programa de resta de matrices:

cd ~/project
nano matrix_subtraction.c

Ahora, agrega el siguiente código al archivo:

#include <stdio.h>

#define MAX_SIZE 100

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

    // Leer dimensiones de la matriz
    printf("Ingrese el número de filas: ");
    scanf("%d", &filas);
    printf("Ingrese el número de columnas: ");
    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;
}

Ejemplo de salida:

Ingrese el número de filas: 2
Ingrese el número de columnas: 2
Ingrese los elementos de la primera matriz:
Ingrese el elemento [0][0]: 5
Ingrese el elemento [0][1]: 6
Ingrese el elemento [1][0]: 7
Ingrese el elemento [1][1]: 8
Ingrese los elementos de la segunda matriz:
Ingrese el elemento [0][0]: 1
Ingrese el elemento [0][1]: 2
Ingrese el elemento [1][0]: 3
Ingrese el elemento [1][1]: 4

Ahora compilemos y ejecutemos el programa:

gcc matrix_subtraction.c -o matrix_subtraction
./matrix_subtraction

Explicación del código:

  • Definimos un tamaño máximo de matriz de 100x100 usando MAX_SIZE
  • filas y columnas almacenan las dimensiones de las matrices
  • Se crean dos matrices bidimensionales matriz1 y matriz2 para almacenar los elementos de la matriz
  • scanf() se utiliza para leer las dimensiones y los elementos de la matriz desde la entrada del usuario
  • Se utilizan bucles anidados para ingresar los elementos de ambas matrices

Restar Elementos Correspondientes

En este paso, aprenderás a restar los elementos correspondientes de dos matrices y almacenar el resultado en una nueva matriz. Ampliaremos el programa anterior para realizar la resta de matrices.

Abre el archivo existente y modifica el código:

cd ~/project
nano matrix_subtraction.c

Actualiza el código con la lógica de resta de matrices:

#include <stdio.h>

#define MAX_SIZE 100

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

    // Leer dimensiones de la matriz
    printf("Ingrese el número de filas: ");
    scanf("%d", &filas);
    printf("Ingrese el número de columnas: ");
    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]);
        }
    }

    // Restar elementos correspondientes
    for (int i = 0; i < filas; i++) {
        for (int j = 0; j < columnas; j++) {
            resultado[i][j] = matriz1[i][j] - matriz2[i][j];
        }
    }

    return 0;
}

Ejemplo de salida:

Ingrese el número de filas: 2
Ingrese el número de columnas: 2
Ingrese los elementos de la primera matriz:
Ingrese el elemento [0][0]: 5
Ingrese el elemento [0][1]: 6
Ingrese el elemento [1][0]: 7
Ingrese el elemento [1][1]: 8
Ingrese los elementos de la segunda matriz:
Ingrese el elemento [0][0]: 1
Ingrese el elemento [0][1]: 2
Ingrese el elemento [1][0]: 3
Ingrese el elemento [1][1]: 4

Explicación del código:

  • Se crea una nueva matriz bidimensional resultado para almacenar los resultados de la resta.
  • Los bucles anidados iteran a través de cada elemento de la matriz.
  • resultado[i][j] se calcula restando los elementos correspondientes de matriz1 y matriz2.
  • La resta sigue las reglas de resta de matrices elemento por elemento.

Ahora compilemos el programa:

gcc matrix_subtraction.c -o matrix_subtraction

Imprimir la Matriz Resultante

En este paso, aprenderás a imprimir la matriz resultante después de la resta. Modificaremos el programa anterior para mostrar los resultados de la resta.

Abre el archivo existente y actualiza el código:

cd ~/project
nano matrix_subtraction.c

Actualiza el código con la lógica de impresión de la matriz:

#include <stdio.h>

#define MAX_SIZE 100

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

    // Leer dimensiones de la matriz
    printf("Ingrese el número de filas: ");
    scanf("%d", &filas);
    printf("Ingrese el número de columnas: ");
    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]);
        }
    }

    // Restar elementos correspondientes
    for (int i = 0; i < filas; i++) {
        for (int j = 0; j < columnas; j++) {
            resultado[i][j] = matriz1[i][j] - matriz2[i][j];
        }
    }

    // Imprimir la matriz resultante
    printf("\nMatriz Resultante después de la Resta:\n");
    for (int i = 0; i < filas; i++) {
        for (int j = 0; j < columnas; j++) {
            printf("%d ", resultado[i][j]);
        }
        printf("\n");
    }

    return 0;
}

Compila y ejecuta el programa:

gcc matrix_subtraction.c -o matrix_subtraction
./matrix_subtraction

Ejemplo de salida:

Ingrese el número de filas: 2
Ingrese el número de columnas: 2
Ingrese los elementos de la primera matriz:
Ingrese el elemento [0][0]: 5
Ingrese el elemento [0][1]: 6
Ingrese el elemento [1][0]: 7
Ingrese el elemento [1][1]: 8
Ingrese los elementos de la segunda matriz:
Ingrese el elemento [0][0]: 1
Ingrese el elemento [0][1]: 2
Ingrese el elemento [1][0]: 3
Ingrese el elemento [1][1]: 4

Matriz Resultante después de la Resta:
4 4
4 4

Explicación del código:

  • Se agrega un nuevo bucle anidado para imprimir la matriz resultado.
  • printf("%d ", resultado[i][j]) imprime cada elemento.
  • Un printf("\n") adicional crea una nueva línea después de cada fila.
  • La salida muestra la matriz con los valores restados.

Resumen

En este laboratorio, aprendiste cómo leer las dimensiones y los elementos de una matriz desde la entrada del usuario en un programa C para la resta de matrices. El programa permite a los usuarios ingresar el tamaño y los valores de dos matrices, que luego se almacenan en dos arreglos bidimensionales. Este paso sienta las bases para el paso siguiente, que consiste en restar los elementos correspondientes de las dos matrices e imprimir la matriz resultante.

El programa solicita al usuario que ingrese el número de filas y columnas, y luego lo guía a través de la entrada de los elementos de la primera y segunda matriz. Esto asegura que el programa pueda manejar correctamente matrices de diferentes tamaños y almacenar los datos de entrada para su procesamiento posterior.