Questão 11.
Escreva um programa para entrar com valores para uma matriz
simétrica.
Passo 1
O enunciado pede um programa para ler valores de uma matriz
simétrica, isto é, com a propriedade
para todo
. Vamos usar um array bidimensional, ler apenas a “metade” superior da matriz e aproveitar a simetria para preencher automaticamente a metade inferior.
Passo 2
A estratégia é:
- Ler do usuário o valor de
, a ordem da matriz. - Declarar um array
de tamanho . - Usar dois laços aninhados com índice externo
variando de 0 até e índice interno variando de até . - Para cada par
, ler e atribuir imediatamente . - (Opcional) Exibir toda a matriz para confirmar que ficou simétrica.
Passo 3
No código em C:
- Incluímos
<stdio.h>. - Declaramos
int A[MAX][MAX], n, i, j;com#define MAX 100(ou outro limite maior que). - Lemos
ncomscanf. - Fazemos os dois laços
for(i=0; i<n; i++)efor(j=i; j<n; j++)para leitura e espelhamento. - Finalmente, imprimimos a matriz completa com mais dois laços
for.
Resposta
#include <stdio.h>
#define MAX 100
int main() {
int A[MAX][MAX];
int n, i, j;
printf("Digite a ordem n da matriz: ");
scanf("%d", &n);
// Leitura apenas da metade superior (i <= j) e espelhamento
for (i = 0; i < n; i++) {
for (j = i; j < n; j++) {
printf("A[%d][%d] = ", i+1, j+1);
scanf("%d", &A[i][j]);
A[j][i] = A[i][j]; // preenche o elemento simétrico
}
}
// Impressão da matriz completa
printf("\nMatriz simétrica A:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%4d", A[i][j]);
}
printf("\n");
}
return 0;
}