Verificar se a Matriz é Simétrica
Neste passo final, você aprimorará o programa para fornecer uma saída mais detalhada sobre a simetria da matriz e criará uma função para melhorar a modularidade do código.
Abra o arquivo existente e atualize o código:
cd ~/project
nano symmetric_matrix.c
Substitua o código anterior pela seguinte implementação:
#include <stdio.h>
#include <stdbool.h>
#define MAX_SIZE 100
// Função para verificar a simetria da matriz
bool is_symmetric_matrix(int matrix[MAX_SIZE][MAX_SIZE], int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (matrix[i][j] != matrix[j][i]) {
return false;
}
}
}
return true;
}
// Função para imprimir a matriz
void print_matrix(int matrix[MAX_SIZE][MAX_SIZE], int n) {
printf("\nMatriz:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%4d ", matrix[i][j]);
}
printf("\n");
}
}
int main() {
int n, matrix[MAX_SIZE][MAX_SIZE];
// Ler as dimensões da matriz
printf("Digite o tamanho da matriz quadrada: ");
scanf("%d", &n);
// Ler os elementos da matriz
printf("Digite os elementos da matriz:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("Digite o elemento [%d][%d]: ", i, j);
scanf("%d", &matrix[i][j]);
}
}
// Imprimir a matriz inserida
print_matrix(matrix, n);
// Verificar e imprimir o status de simetria
if (is_symmetric_matrix(matrix, n)) {
printf("\nAnálise de Simetria:\n");
printf("✓ A matriz é simétrica.\n");
printf(" - Todos os elementos A[i][j] são iguais a A[j][i]\n");
printf(" - A matriz é invariante sob transposição\n");
} else {
printf("\nAnálise de Simetria:\n");
printf("✗ A matriz não é simétrica.\n");
printf(" - Alguns elementos A[i][j] não são iguais a A[j][i]\n");
}
return 0;
}
Compile e execute o programa:
gcc symmetric_matrix.c -o symmetric_matrix
./symmetric_matrix
Exemplo de saída para uma matriz simétrica:
Digite o tamanho da matriz quadrada: 3
Digite os elementos da matriz:
Digite o elemento [0][0]: 1
Digite o elemento [0][1]: 2
Digite o elemento [0][2]: 3
Digite o elemento [1][0]: 2
Digite o elemento [1][1]: 4
Digite o elemento [1][2]: 5
Digite o elemento [2][0]: 3
Digite o elemento [2][1]: 5
Digite o elemento [2][2]: 6
Matriz:
1 2 3
2 4 5
3 5 6
Análise de Simetria:
✓ A matriz é simétrica.
- Todos os elementos A[i][j] são iguais a A[j][i]
- A matriz é invariante sob transposição
Exemplo de saída para uma matriz não simétrica:
Digite o tamanho da matriz quadrada: 3
Digite os elementos da 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 o elemento [2][0]: 7
Digite o elemento [2][1]: 8
Digite o elemento [2][2]: 9
Matriz:
1 2 3
4 5 6
7 8 9
Análise de Simetria:
✗ A matriz não é simétrica.
- Alguns elementos A[i][j] não são iguais a A[j][i]
Melhorias-chave:
- Adicionada a função
is_symmetric_matrix() para melhor organização do código.
- Criada a função
print_matrix() para exibir o conteúdo da matriz.
- Saída aprimorada com análise detalhada de simetria.
- Usados indicadores visuais (✓/✗) para destacar o status de simetria.