Faça um programa principal que crie duas matrizes quadradas, com 4 linhas e 4 colunas, para armazenar valores reais. A primeira matriz deve ser preenchida com valores informados pelo usuário. Desenvolva as funções abaixo para armazenar na segunda matriz, o conteúdo solicitado relativo à primeira matriz.
b. diagonal (float mat1[4][4], float mat2[4][4]): a diagonal principal de mat2 recebe a diagonal principal de mat1. Os demais elementos da segunda matriz devem ser nulos.
b. diagonal (float mat1[4][4], float mat2[4][4]): a diagonal principal de mat2 recebe a diagonal principal de mat1. Os demais elementos da segunda matriz devem ser nulos.
Passo 1
O enunciado pede um programa em C que declare duas matrizes quadradas de dimensão
, ambas do tipo
float
. A primeira matriz (mat1
) será preenchida com valores fornecidos pelo usuário; a segunda matriz (mat2
) deve receber apenas a diagonal principal de mat1
, zerando todos os demais elementos. O conteúdo da matéria envolve:- declaração de arrays bidimensionais;
- leitura de dados via
scanf
; - uso de funções para modularizar a lógica;
- estruturas de repetição aninhadas para percorrer matrizes.
Passo 2
Começamos declarando a função . Se
diagonal
, que recebe como parâmetros as duas matrizes. Dentro dela usamos dois loops for
aninhados para percorrer cada posição
i == j
, copiamos o elemento de mat1[i][j]
para mat2[i][j]
; caso contrário, atribuimos 0.0 a mat2[i][j]
.Passo 3
No
main
, declaramos as matrizes mat1
e mat2
e variáveis inteiras i
, j
para índice. Primeiro, iteramos sobre mat1
pedindo ao usuário que informe cada elemento. Em seguida, chamamos diagonal(mat1, mat2)
para preencher mat2
. Por fim, imprimimos os valores de mat2
formatados.Passo 4
Apresentamos a implementação completa em C, incluindo
#include <stdio.h>
, a função diagonal
e o main
conforme discutido.Resposta
#include <stdio.h>
/* Função que preenche mat2 com a diagonal principal de mat1
e zera os demais elementos */
void diagonal(float mat1[4][4], float mat2[4][4]) {
int i, j;
for (i \(=0\); i < 4; i\(++\)) {
for (j \(=0\); j < 4; j\(++\)) {
if (i \(==\) j) {
mat2[i][j] = mat1[i][j];
} else {
mat2[i][j] \(=0.0\)f;
}
}
}
}
int main() {
float mat1[4][4], mat2[4][4];
int i, j;
/* Leitura dos elementos de mat1 */
printf("Informe os elementos da matriz 4x4:\
");
for (i \(=0\); i < 4; i\(++\)) {
for (j \(=0\); j < 4; j\(++\)) {
printf("mat1[%d][%d]: ", i, j);
scanf("%f", &mat1[i][j]);
}
}
/* Preenchimento de mat2 usando a função diagonal */
diagonal(mat1, mat2);
/* Impressão de mat2 */
printf("\
Matriz resultante mat2 (apenas diagonal principal):\
");
for (i \(=0\); i < 4; i\(++\)) {
for (j \(=0\); j < 4; j\(++\)) {
printf("%7.2f ", mat2[i][j]);
}
printf("\
");
}
return 0;
}