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
mat2com zeros para que apenas a diagonal seja modificada. - Ler os 16 valores de
mat1usando dois loopsfor. - Chamar a função
media(mat1, mat2). - Imprimir
mat2para 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;
}