Faça um algoritmo para salvar inteiros em uma matriz da seguinte forma:
- todos os valores da diagonal principal devem receber o valor 1 ;
- todos os valores acima da diagonal principal serão lidos a partir de valores digitados no teclado;
- todos os valores abaixo da diagonal principal serão espelhados a partir da diagonal principal de forma que o valor na linha
, coluna i receba o valor da linha
, coluna
. Por exemplo, o valor contido na
linha,
coluna será o mesmo que está na
linha,
coluna.
Passo 1
Então, o enunciado pede um algoritmo que preencha uma matriz quadrada de inteiros do jeitinho abaixo:
- Na diagonal principal (onde o índice da linha é igual ao da coluna) tudo vira 1;
- Acima da diagonal (linha < coluna) a gente lê valores do teclado;
- Abaixo da diagonal (linha > coluna) a gente “espelha” os valores que já estão acima (ou seja, o elemento na linha
, coluna recebe o valor que está na linha , coluna ).
Conteúdo da matéria: matrizes, laços (repetições) aninhados e estruturas condicionais.
O que vamos precisar:
O que vamos precisar:
- Saber percorrer todos os elementos de uma matriz usando dois loops (um para linha, outro para coluna).
- Usar uma estrutura
if
/else
pra testar se estamos na diagonal, acima ou abaixo dela.
Passo 2
Primeiro, vamos definir o tamanho da matriz e alocá-la. Em pseudocódigo, a ideia é:
leia n // dimensão da matriz (n x n)
declare A[n][n] // cria uma matriz A de inteiros com n linhas e n colunas
Teoria envolvida: em muitas linguagens (C, Java, Python etc.) basta declarar um vetor 2D de tamanho n×n para usar depois nos loops.
Passo 3
Agora, vamos percorrer toda a matriz com dois laços aninhados. Para cada par de índices (i, j), a gente verifica:
- Se i = j, então
. - Senão, se i < j, a gente lê do teclado: “leia
”. - Senão (que é o caso i > j), faz o espelhamento:
.
Explicando a teoria:
- O laço “para i de 1 até n” faz a varredura linha a linha.
- O laço “para j de 1 até n” varre coluna a coluna.
- A condição
i = j
identifica a diagonal principal. - Quando i < j, estamos na parte superior da matriz, que o enunciado pede pra ler direto do usuário.
- Quando i > j, a gente está na parte inferior, então usa o espelhamento (propriedade de simetria).
Passo 4
Depois de preencher, se você quiser, dá uma impressa na matriz pra ver o resultado. Tipo:
para i de 1 até n
para j de 1 até n
escreva A[i][j], “ ”
fim para
escreva “\n”
fim para
Resposta
Segue o pseudocódigo completo:
leia n
declare A[n][n]
para i de 1 até n faça
para j de 1 até n faça
se i = j então
A[i][j] ← 1
senão se i < j então
leia A[i][j]
senão
A[i][j] ← A[j][i]
fim se
fim para
fim para
// (opcional) imprimir A
para i de 1 até n faça
para j de 1 até n faça
escreva A[i][j], " "
fim para
escreva "\n"
fim para