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.

Passo 1

O enunciado pede um programa em C que declare duas matrizes quadradas de dimensão 4\times4, 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 diagonal, que recebe como parâmetros as duas matrizes. Dentro dela usamos dois loops for aninhados para percorrer cada posição [i][j]. Se 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;
}

Exercícios relacionados