Adicionar Duas Matrizes em C

CBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a somar duas matrizes em programação C. O laboratório cobre os seguintes passos: leitura das dimensões e elementos de ambas as matrizes, adição dos elementos correspondentes e impressão da matriz resultante. Você começará criando um programa C para ler as dimensões e elementos da matriz, depois implementará a lógica de adição de matrizes e, finalmente, imprimirá a matriz final. O laboratório tem como objetivo fornecer uma experiência prática no trabalho com matrizes e álgebra linear usando C.

Leitura das Dimensões e Elementos de Ambas as Matrizes

Neste passo, você aprenderá a ler as dimensões e os elementos de duas matrizes em um programa C. A adição de matrizes requer matrizes do mesmo tamanho, por isso, primeiro implementaremos a entrada para as dimensões e elementos da matriz.

Criar o Programa de Adição de Matrizes

Primeiro, crie um novo arquivo C para a adição de matrizes:

cd ~/project
nano matrix_addition.c

Agora, vamos escrever o código para ler as dimensões e os elementos das matrizes:

#include <stdio.h>

#define MAX_SIZE 10

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

    // Ler as dimensões das matrizes
    printf("Digite o número de linhas (máximo %d): ", MAX_SIZE);
    scanf("%d", &rows);
    printf("Digite o número de colunas (máximo %d): ", MAX_SIZE);
    scanf("%d", &cols);

    // Entrada dos elementos da primeira matriz
    printf("Digite os elementos da primeira matriz:\n");
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            printf("Digite o elemento [%d][%d]: ", i, j);
            scanf("%d", &matrix1[i][j]);
        }
    }

    // Entrada dos elementos da segunda matriz
    printf("Digite os elementos da segunda matriz:\n");
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            printf("Digite o elemento [%d][%d]: ", i, j);
            scanf("%d", &matrix2[i][j]);
        }
    }

    return 0;
}

Compilar e Executar o Programa

Compile o programa:

gcc matrix_addition.c -o matrix_addition

Saída de Exemplo

Ao executar o programa, ele solicitará que você digite as dimensões e os elementos da matriz:

Digite o número de linhas (máximo 10): 2
Digite o número de colunas (máximo 10): 3
Digite os elementos da primeira matriz:
Digite o elemento [0][0]: 1
Digite o elemento [0][1]: 2
Digite o elemento [0][2]: 3
Digite o elemento [1][0]: 4
Digite o elemento [1][1]: 5
Digite o elemento [1][2]: 6
Digite os elementos da segunda matriz:
Digite o elemento [0][0]: 7
Digite o elemento [0][1]: 8
Digite o elemento [0][2]: 9
Digite o elemento [1][0]: 10
Digite o elemento [1][1]: 11
Digite o elemento [1][2]: 12

Explicação do Código

  • #define MAX_SIZE 10 define um limite máximo para as dimensões da matriz.
  • scanf() é usado para ler entradas inteiras para linhas, colunas e elementos da matriz.
  • Loops for aninhados são usados para inserir elementos para ambas as matrizes.
  • O programa garante que as dimensões da matriz estejam dentro do tamanho máximo definido.

Adicionar Elementos Correspondentes

Neste passo, você aprenderá como adicionar elementos correspondentes de duas matrizes e armazenar o resultado em uma nova matriz.

Atualizar o Programa de Adição de Matrizes

Abra o arquivo C anterior:

cd ~/project
nano matrix_addition.c

Modifique o programa para adicionar os elementos da matriz:

#include <stdio.h>

#define MAX_SIZE 10

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

    // O código de entrada anterior permanece o mesmo
    // ... (entrada das dimensões e elementos das matrizes matrix1 e matrix2)

    // Adicionar elementos correspondentes
    printf("\nMatriz Resultante (Matriz1 + Matriz2):\n");
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            result[i][j] = matrix1[i][j] + matrix2[i][j];
            printf("%d ", result[i][j]);
        }
        printf("\n");
    }

    return 0;
}

Compilar e Executar o Programa

Compile o programa atualizado:

gcc matrix_addition.c -o matrix_addition

Execute o programa:

./matrix_addition

Saída de Exemplo

Digite o número de linhas (máximo 10): 2
Digite o número de colunas (máximo 10): 3
Digite os elementos da primeira matriz:
Digite o elemento [0][0]: 1
Digite o elemento [0][1]: 2
Digite o elemento [0][2]: 3
Digite o elemento [1][0]: 4
Digite o elemento [1][1]: 5
Digite o elemento [1][2]: 6
Digite os elementos da segunda matriz:
Digite o elemento [0][0]: 7
Digite o elemento [0][1]: 8
Digite o elemento [0][2]: 9
Digite o elemento [1][0]: 10
Digite o elemento [1][1]: 11
Digite o elemento [1][2]: 12

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

Explicação do Código

  • Um novo array 2D result é criado para armazenar a soma dos elementos da matriz.
  • Loops for aninhados iteram por cada elemento de ambas as matrizes.
  • result[i][j] = matrix1[i][j] + matrix2[i][j] adiciona elementos correspondentes.
  • printf() é usado para exibir a matriz resultante.

Imprimir a Matriz Resultante

Neste passo, você aprenderá como formatar e imprimir a matriz resultante de forma limpa e legível.

Aprimorar a Função de Impressão de Matrizes

Abra o arquivo C anterior:

cd ~/project
nano matrix_addition.c

Atualize o programa com uma função dedicada para impressão de matrizes:

#include <stdio.h>

#define MAX_SIZE 10

// Função para imprimir a 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];

    // O código de entrada anterior permanece o mesmo
    // ... (entrada das dimensões e elementos das matrizes matrix1 e matrix2)

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

    // Imprimir matrizes
    printMatrix(matrix1, rows, cols, "Primeira Matriz");
    printMatrix(matrix2, rows, cols, "Segunda Matriz");
    printMatrix(result, rows, cols, "Matriz Resultante (Matriz1 + Matriz2)");

    return 0;
}

Compilar e Executar o Programa

Compile o programa atualizado:

gcc matrix_addition.c -o matrix_addition

Execute o programa:

./matrix_addition

Saída de Exemplo

Digite o número de linhas (máximo 10): 2
Digite o número de colunas (máximo 10): 3
Digite os elementos da primeira matriz:
Digite o elemento [0][0]: 1
Digite o elemento [0][1]: 2
Digite o elemento [0][2]: 3
Digite o elemento [1][0]: 4
Digite o elemento [1][1]: 5
Digite o elemento [1][2]: 6
Digite os elementos da segunda matriz:
Digite o elemento [0][0]: 7
Digite o elemento [0][1]: 8
Digite o elemento [0][2]: 9
Digite o elemento [1][0]: 10
Digite o elemento [1][1]: 11
Digite o elemento [1][2]: 12

Primeira Matriz:
   1    2    3
   4    5    6

Segunda Matriz:
   7    8    9
  10   11   12

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

Explicação do Código

  • A função printMatrix() é criada para imprimir matrizes com formatação consistente.
  • O especificador de formato %4d garante a impressão alinhada das colunas.
  • A função recebe a matriz, as dimensões e um nome como parâmetros.
  • As matrizes são impressas com cabeçalhos descritivos.
  • Loops aninhados iteram pelos elementos da matriz para impressão.

Resumo

Neste laboratório, você aprendeu como ler as dimensões e os elementos de duas matrizes em um programa C. Este é um passo essencial para a adição de matrizes, pois requer matrizes do mesmo tamanho. Você implementou a entrada para as dimensões e elementos da matriz, garantindo que o programa possa lidar com matrizes de até um tamanho máximo de 10x10.

Após ler as dimensões e os elementos das matrizes, o próximo passo é adicionar os elementos correspondentes das duas matrizes e armazenar a matriz resultante.