Leitura de Dimensões e Elementos
Neste passo, você aprenderá a ler as dimensões e elementos das matrizes para a multiplicação de matrizes em C. Criaremos um programa que permite ao usuário inserir o tamanho e os valores de duas matrizes.
Primeiro, vamos criar um novo arquivo C para nosso programa de multiplicação de matrizes:
cd ~/project
nano matrix_multiply.c
Agora, adicione o seguinte código para ler as dimensões da matriz:
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int rows1, cols1, rows2, cols2;
// Ler as dimensões da primeira matriz
printf("Digite as dimensões da primeira matriz (linhas colunas): ");
scanf("%d %d", &rows1, &cols1);
// Ler as dimensões da segunda matriz
printf("Digite as dimensões da segunda matriz (linhas colunas): ");
scanf("%d %d", &rows2, &cols2);
// Verificar se as matrizes podem ser multiplicadas
if (cols1 != rows2) {
printf("Multiplicação de matrizes não possível!\n");
return 1;
}
printf("As dimensões das matrizes são válidas para multiplicação.\n");
return 0;
}
Compile e execute o programa:
gcc matrix_multiply.c -o matrix_multiply
./matrix_multiply
Exemplo de saída:
Digite as dimensões da primeira matriz (linhas colunas): 2 3
Digite as dimensões da segunda matriz (linhas colunas): 3 2
As dimensões das matrizes são válidas para multiplicação.
Vamos analisar o código:
- Definimos
MAX_SIZE como 100 para limitar as dimensões das matrizes
scanf() é usado para ler as dimensões da matriz a partir da entrada do usuário
- Verificamos se a multiplicação de matrizes é possível comparando as colunas da primeira matriz com as linhas da segunda matriz
- Se as dimensões forem incompatíveis, o programa imprime uma mensagem de erro
Agora, vamos modificar o código para ler os elementos da matriz:
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int rows1, cols1, rows2, cols2;
int matrix1[MAX_SIZE][MAX_SIZE];
int matrix2[MAX_SIZE][MAX_SIZE];
// Ler as dimensões da primeira matriz
printf("Digite as dimensões da primeira matriz (linhas colunas): ");
scanf("%d %d", &rows1, &cols1);
// Ler as dimensões da segunda matriz
printf("Digite as dimensões da segunda matriz (linhas colunas): ");
scanf("%d %d", &rows2, &cols2);
// Verificar se as matrizes podem ser multiplicadas
if (cols1 != rows2) {
printf("Multiplicação de matrizes não possível!\n");
return 1;
}
// Ler os elementos da primeira matriz
printf("Digite os elementos da primeira matriz:\n");
for (int i = 0; i < rows1; i++) {
for (int j = 0; j < cols1; j++) {
printf("Digite o elemento [%d][%d]: ", i, j);
scanf("%d", &matrix1[i][j]);
}
}
// Ler os elementos da segunda matriz
printf("Digite os elementos da segunda matriz:\n");
for (int i = 0; i < rows2; i++) {
for (int j = 0; j < cols2; j++) {
printf("Digite o elemento [%d][%d]: ", i, j);
scanf("%d", &matrix2[i][j]);
}
}
printf("Matrizes lidas com sucesso.\n");
return 0;
}
Compile e execute o programa:
gcc matrix_multiply.c -o matrix_multiply
./matrix_multiply
Exemplo de saída:
Digite as dimensões da primeira matriz (linhas colunas): 2 3
Digite as dimensões da segunda matriz (linhas colunas): 3 2
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 [1][0]: 9
Digite o elemento [1][1]: 10
Digite o elemento [2][0]: 11
Digite o elemento [2][1]: 12
Matrizes lidas com sucesso.