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.
f. acima_da_media (float mat1[4][4], float mat2[4][4]): mat2 recebe apenas os elementos de mat1 cujo valor está acima da média dos valores da primeira matriz. As demais posições não preenchidas de mat2, se existirem, devem receber 0 .

Passo 1

Aqui a gente precisa criar um programa em C que tenha duas matrizes quadradas 4\times4 de tipo float. A primeira matriz, mat1, vai receber do teclado todos os valores; a segunda, mat2, vai ser preenchida pela função acima_da_media, que copia para mat2 apenas os elementos de mat1 maiores que a média de todos os seus elementos, colocando zero nos demais lugares.

Passo 2

Dentro da função acima_da_media, primeiro percorremos toda a mat1 para calcular a soma de seus 16 elementos e, daí, a média. Em C, isso dá algo como:
float soma \(=0.0\)f;
for (int i \(=0\); i < 4; i\(++\)) {
 for (int j \(=0\); j < 4; j\(++\)) {
 soma \(+=\) mat1[i][j];
 }
}
float media = soma / 16.0f;

Passo 3

Ainda na função acima_da_media, com a média em mãos, fazemos outro duplo laço aninhado para preencher mat2. Se mat1[i][j] > media, copiamos esse valor; caso contrário, colocamos 0.0f. Ficaria assim:
for (int i \(=0\); i < 4; i\(++\)) {
 for (int j \(=0\); j < 4; j\(++\)) {
 if (mat1[i][j] > media)
 mat2[i][j] = mat1[i][j];
 else
 mat2[i][j] \(=0.0\)f;
 }
}

Passo 4

No main, declaramos as duas matrizes, lemos mat1 do usuário (com scanf em dois loops) e então chamamos acima_da_media(mat1, mat2). Para ver o resultado, imprimimos mat2 na tela também com dois loops.

Resposta

#include <stdio.h>

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

 for (int i \(=0\); i < 4; i\(++\)) {
 for (int j \(=0\); j < 4; j\(++\)) {
 if (mat1[i][j] > media)
 mat2[i][j] = mat1[i][j];
 else
 mat2[i][j] \(=0.0\)f;
 }
 }
}

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

 printf("Digite os valores da matriz 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]);
 }
 }

 \(acima_da_media\)(mat1, mat2);

 printf("
Matriz resultante (valores acima da média):
");
 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