Crie uma função que receba como parâmetro um array de float, definido de tal forma que o último número seja zero. Esta função deve retornar a diferença entre a média dos números contidos nesse array e o menor dos números, não contando com o zero final.
Exemplo: (1, 7, 4, 0); Média: 4; Menor: 1; Retorno = média - menor = 3;
Exemplo: (1, 7, 4, 0); Média: 4; Menor: 1; Retorno = média - menor = 3;
Passo 1
O enunciado pede uma função que receba um array de
float
cujo último elemento é sempre zero (sentinela) e retorne a diferença entre a média dos elementos (excluindo o zero) e o menor valor dentre eles. O conteúdo envolvido é: percorrer um array usando laço, acumular soma, contar quantos elementos válidos temos, encontrar o mínimo e calcular média e diferença.Passo 2
Inicializamos três variáveis antes de percorrer o array:
–
–
–
Como ainda não vimos nenhum elemento válido, vamos atribuir a
–
soma
para acumular a soma dos elementos.–
n
para contar quantos elementos (não zero) já processamos.–
menor
para armazenar o menor valor encontrado até o momento.Como ainda não vimos nenhum elemento válido, vamos atribuir a
menor
o primeiro elemento do array.Passo 3
Percorremos o array com um índice
i
enquanto arr[i] != 0.0
. A cada iteração fazemos:soma += arr[i]
n += 1
- se
arr[i] < menor
, entãomenor = arr[i]
Passo 4
Ao sair do laço sabemos que
e que temos
valores. Calculamos a média como
Passo 5
A diferença que a função deve retornar é
Passo 6
Exemplo com
:
– Após a iteração:
– Média: .
– Diferença: .
– Após a iteração:
soma = 1+7+4 = 12
, n = 3
, menor = 1
.– Média:
– Diferença:
Resposta
float diferencaMediaMenor(float arr[]) {
float soma \(=0.0\)f;
int n \(=0\);
float menor = arr[0];
for (int i \(=0\); arr[i] !\(=0.0\)f; i\(++\)) {
soma \(+=\) arr[i];
n \(+=1\);
if (arr[i] < menor) {
menor = arr[i];
}
}
float media = soma / n;
return media - menor;
}