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 .
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
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 elementos e, daí, a média. Em C, isso dá algo como:
acima_da_media
, primeiro percorremos toda a mat1
para calcular a soma de seus
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;
}