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.
d. media (float mat1[4][4], float mat2[4][4]): a média dos valores de cada linha da primeira matriz é adicionada à respectiva linha da segunda matriz na posição da diagonal principal. Exemplo: a média dos valores da linha 0 de mat1 é adicionada na posição [0][0] de mat2. A média da linha 1 é adicionada na posição [1][1] de mat2 etc…

Passo 1

O enunciado pede um programa em C que crie duas matrizes quadradas de dimensão 4\times 4 para valores float. A primeira matriz (mat1) será preenchida com leitura via scanf e a segunda (mat2) vai receber, em cada posição da diagonal principal, a média dos valores de cada linha correspondente de mat1. Vamos usar loops aninhados para leitura e impressão e uma função media para calcular e armazenar essas médias em mat2.

Passo 2

No main devemos:
  1. Declarar float mat1[4][4], mat2[4][4];
  2. Inicializar mat2 com zeros para que apenas a diagonal seja modificada.
  3. Ler os 16 valores de mat1 usando dois loops for.
  4. Chamar a função media(mat1, mat2).
  5. Imprimir mat2 para verificar o resultado.

Passo 3

A função media recebe as duas matrizes como parâmetros. Para cada linha i de mat1:
  1. Soma todos os 4 elementos dessa linha.
  2. Calcula a média dividindo por 4.0f.
  3. Atribui o resultado a mat2[i][i].

Passo 4

Depois de popular a diagonal de mat2, o main imprime toda a matriz mat2, mostrando zeros fora da diagonal e as médias na diagonal principal.

Resposta

#include <stdio.h>

void media(float mat1[4][4], float mat2[4][4]) {
 for (int i \(=0\); i < 4; i\(++\)) {
 float soma \(=0.0\)f;
 for (int j \(=0\); j < 4; j\(++\)) {
 soma \(+=\) mat1[i][j];
 }
 mat2[i][i] = soma / 4.0f;
 }
}

int main() {
 float mat1[4][4], mat2[4][4];

 // Inicializa mat2 com zeros
 for (int i \(=0\); i < 4; i\(++\)) {
 for (int j \(=0\); j < 4; j\(++\)) {
 mat2[i][j] \(=0.0\)f;
 }
 }

 // Leitura de mat1
 printf("Informe 16 valores reais para preencher mat1 (4x4):
");
 for (int i \(=0\); i < 4; i\(++\)) {
 for (int j \(=0\); j < 4; j\(++\)) {
 printf("mat1[%d][%d] = ", i, j);
 scanf("%f", &mat1[i][j]);
 }
 }

 // Calcula médias das linhas de mat1 e armazena em mat2 na diagonal
 media(mat1, mat2);

 // Impressão de mat2
 printf("
mat2 após calcular médias na diagonal:
");
 for (int i \(=0\); i < 4; i\(++\)) {
 for (int j \(=0\); j < 4; j\(++\)) {
 printf("%8.2f ", mat2[i][j]);
 }
 printf("
");
 }

 return 0;
}

Exercícios relacionados