Introdução
Neste laboratório, aprenderá a subtrair duas matrizes num programa em C. O laboratório cobre os seguintes passos:
Primeiro, aprenderá a ler as dimensões e os elementos de duas matrizes a partir da entrada do utilizador. Criará um programa em C que solicita ao utilizador o número de linhas e colunas, e depois os elementos das duas matrizes.
Em seguida, implementará a operação de subtração de matrizes, onde subtrairá os elementos correspondentes das duas matrizes e armazenará o resultado numa nova matriz. Finalmente, aprenderá a imprimir a matriz resultante.
Ler Dimensões e Elementos
Neste passo, aprenderá a ler as dimensões e elementos de matrizes a partir da entrada do utilizador num programa em C para subtração de matrizes. Criaremos um programa que permite aos utilizadores introduzir o tamanho e os valores de duas matrizes.
Primeiro, crie um novo ficheiro C para o nosso programa de subtração de matrizes:
cd ~/project
nano matrix_subtraction.c
Agora, adicione o seguinte código ao ficheiro:
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE];
int matrix2[MAX_SIZE][MAX_SIZE];
// Ler as dimensões da matriz
printf("Introduza o número de linhas: ");
scanf("%d", &rows);
printf("Introduza o número de colunas: ");
scanf("%d", &cols);
// Introduzir elementos da primeira matriz
printf("Introduza os elementos da primeira matriz:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Introduza o elemento [%d][%d]: ", i, j);
scanf("%d", &matrix1[i][j]);
}
}
// Introduzir elementos da segunda matriz
printf("Introduza os elementos da segunda matriz:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Introduza o elemento [%d][%d]: ", i, j);
scanf("%d", &matrix2[i][j]);
}
}
return 0;
}
Exemplo de saída:
Introduza o número de linhas: 2
Introduza o número de colunas: 2
Introduza os elementos da primeira matriz:
Introduza o elemento [0][0]: 5
Introduza o elemento [0][1]: 6
Introduza o elemento [1][0]: 7
Introduza o elemento [1][1]: 8
Introduza os elementos da segunda matriz:
Introduza o elemento [0][0]: 1
Introduza o elemento [0][1]: 2
Introduza o elemento [1][0]: 3
Introduza o elemento [1][1]: 4
Vamos compilar e executar o programa:
gcc matrix_subtraction.c -o matrix_subtraction
./matrix_subtraction
Explicação do código:
- Definimos um tamanho máximo de matriz de 100x100 usando
MAX_SIZE rowsecolsarmazenam as dimensões das matrizes- Duas matrizes bidimensionais
matrix1ematrix2são criadas para armazenar os elementos das matrizes scanf()é usado para ler as dimensões e elementos das matrizes a partir da entrada do utilizador- Loops aninhados são usados para introduzir os elementos de ambas as matrizes
Subtrair Elementos Correspondentes
Neste passo, aprenderá a subtrair elementos correspondentes de duas matrizes e armazenar o resultado numa nova matriz. Iremos estender o programa anterior para realizar a subtração de matrizes.
Abra o ficheiro existente e modifique o código:
cd ~/project
nano matrix_subtraction.c
Atualize o código com a lógica de subtração de matrizes:
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE];
int matrix2[MAX_SIZE][MAX_SIZE];
int result[MAX_SIZE][MAX_SIZE];
// Ler as dimensões da matriz
printf("Introduza o número de linhas: ");
scanf("%d", &rows);
printf("Introduza o número de colunas: ");
scanf("%d", &cols);
// Introduzir elementos da primeira matriz
printf("Introduza os elementos da primeira matriz:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Introduza o elemento [%d][%d]: ", i, j);
scanf("%d", &matrix1[i][j]);
}
}
// Introduzir elementos da segunda matriz
printf("Introduza os elementos da segunda matriz:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Introduza o elemento [%d][%d]: ", i, j);
scanf("%d", &matrix2[i][j]);
}
}
// Subtrair 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];
}
}
return 0;
}
Exemplo de saída:
Introduza o número de linhas: 2
Introduza o número de colunas: 2
Introduza os elementos da primeira matriz:
Introduza o elemento [0][0]: 5
Introduza o elemento [0][1]: 6
Introduza o elemento [1][0]: 7
Introduza o elemento [1][1]: 8
Introduza os elementos da segunda matriz:
Introduza o elemento [0][0]: 1
Introduza o elemento [0][1]: 2
Introduza o elemento [1][0]: 3
Introduza o elemento [1][1]: 4
Explicação do código:
- Uma nova matriz bidimensional
resulté criada para armazenar os resultados da subtração - Loops aninhados iteram através de cada elemento da matriz
result[i][j]é calculado subtraindo os elementos correspondentes dematrix1ematrix2- A subtração segue as regras de subtração de matrizes elemento a elemento
Vamos compilar o programa:
gcc matrix_subtraction.c -o matrix_subtraction
Imprimir a Matriz Resultante
Neste passo, aprenderá a imprimir a matriz resultante após a subtração. Iremos modificar o programa anterior para exibir os resultados da subtração.
Abra o ficheiro existente e atualize o código:
cd ~/project
nano matrix_subtraction.c
Atualize o código com a lógica de impressão da matriz:
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE];
int matrix2[MAX_SIZE][MAX_SIZE];
int result[MAX_SIZE][MAX_SIZE];
// Ler as dimensões da matriz
printf("Introduza o número de linhas: ");
scanf("%d", &rows);
printf("Introduza o número de colunas: ");
scanf("%d", &cols);
// Introduzir elementos da primeira matriz
printf("Introduza os elementos da primeira matriz:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Introduza o elemento [%d][%d]: ", i, j);
scanf("%d", &matrix1[i][j]);
}
}
// Introduzir elementos da segunda matriz
printf("Introduza os elementos da segunda matriz:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Introduza o elemento [%d][%d]: ", i, j);
scanf("%d", &matrix2[i][j]);
}
}
// Subtrair 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 a matriz resultante
printf("\nMatriz Resultante após a Subtração:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
Compile e execute o programa:
gcc matrix_subtraction.c -o matrix_subtraction
./matrix_subtraction
Exemplo de saída:
Introduza o número de linhas: 2
Introduza o número de colunas: 2
Introduza os elementos da primeira matriz:
Introduza o elemento [0][0]: 5
Introduza o elemento [0][1]: 6
Introduza o elemento [1][0]: 7
Introduza o elemento [1][1]: 8
Introduza os elementos da segunda matriz:
Introduza o elemento [0][0]: 1
Introduza o elemento [0][1]: 2
Introduza o elemento [1][0]: 3
Introduza o elemento [1][1]: 4
Matriz Resultante após a Subtração:
4 4
4 4
Explicação do código:
- Um novo loop aninhado é adicionado para imprimir a matriz
result printf("%d ", result[i][j])imprime cada elemento- Um
printf("\n")adicional cria uma nova linha após cada linha - A saída mostra a matriz com os valores subtraídos
Sumário
Neste laboratório, aprendeu a ler as dimensões e os elementos de uma matriz a partir da entrada do utilizador num programa C para subtração de matrizes. O programa permite aos utilizadores introduzir o tamanho e os valores de duas matrizes, que são então armazenados em dois arrays bidimensionais. Este passo estabelece as bases para o passo seguinte, que consiste em subtrair os elementos correspondentes das duas matrizes e imprimir a matriz resultante.
O programa solicita ao utilizador que introduza o número de linhas e colunas e, em seguida, orienta-o na introdução dos elementos das primeiras e segundas matrizes. Isto garante que o programa pode lidar adequadamente com matrizes de diferentes tamanhos e armazenar os dados de entrada para processamento posterior.



