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 10define um limite máximo para as dimensões da matriz.scanf()é usado para ler entradas inteiras para linhas, colunas e elementos da matriz.- Loops
foraninhados 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
foraninhados 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
%4dgarante 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.



