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…
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
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:- Declarar
float mat1[4][4], mat2[4][4];
- Inicializar
mat2
com zeros para que apenas a diagonal seja modificada. - Ler os 16 valores de
mat1
usando dois loopsfor
. - Chamar a função
media(mat1, mat2)
. - 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
:- Soma todos os 4 elementos dessa linha.
- Calcula a média dividindo por 4.0f.
- 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;
}