Escreva uma função que receberá 4 valores do tipo double e retornará a média dos valores recebidos.
Passo 1
O enunciado pede que escrevamos uma função que recebe quatro valores do tipo
e retorna a média aritmética desses quatro valores.
Informações relevantes fornecidas:
Informações relevantes fornecidas:
- Entrada: quatro valores do tipo
. Vou chamar esses valores de . - Saída: um único valor do tipo
que é a média dos quatro valores recebidos. - Não há outras restrições (não foi especificado idioma, tratamento de casos especiais, etc.), então vou implementar de forma simples e segura.
Passo 2
O conceito matemático que vamos usar é a média aritmética de quatro números. A fórmula é:
Aqui:
-
é a média retornada; -
são os quatro valores de entrada (cada um é um ).
Exemplo concreto (pra ficar tranquilo): se
, então
Passo 3
Escolhendo a assinatura da função (vou usar a sintaxe de C, que é bem comum em provas de exatas e usa explicitamente o tipo
). A assinatura será:
Explicando:
-
antes do nome indica o tipo do valor retornado (a média). - Cada parâmetro
, , … representa um dos quatro valores de entrada. - O nome da função
é descritivo e curto (pode ser outro nome, se preferir).
Passo 4
Implementação direta e simples: somamos os quatro valores e dividimos por
. Usei
(em ponto flutuante) para ficar explícito que a divisão é entre doubles:
double media(double a, double b, double c, double d) {
return (a + b + c + d) / 4.0;
}
Explicação passo a passo do que o código faz:
- Calcula a soma
. - Divide essa soma por
para obter a média. - Retorna o resultado (tipo
).
Passo 5
Um detalhe numérico importante (útil para prova): a soma direta pode causar overflow se os valores forem muito grandes (por exemplo, próximos de
). Para reduzir esse risco e melhorar estabilidade numérica, é comum calcular a média de forma “parcial” (média de pares) e depois a média das médias:
Isso tende a reduzir a chance de somar quatro números gigantes de uma vez. A implementação alternativa (mais robusta) é:
double media(double a, double b, double c, double d) {
double m1 = (a + b) / 2.0;
double m2 = (c + d) / 2.0;
return (m1 + m2) / 2.0;
}
Passo 6
Outros pontos práticos que podem aparecer na prova:
- Se algum dos inputs for
(not-a-number), o resultado será . Se houver e na mesma soma, o resultado pode ser . - Para entradas normais (valores finitos e bem comportados), ambas as implementações (direta e por pares) produzem a média correta. A versão por pares é ligeiramente mais segura numericamente.
- Em linguagens como Java ou Python a ideia é a mesma; basta adaptar a sintaxe.
Resposta
double media(double a, double b, double c, double d) {
double m1 = (a + b) / 2.0;
double m2 = (c + d) / 2.0;
return (m1 + m2) / 2.0;
}
double m1 = (a + b) / 2.0;
double m2 = (c + d) / 2.0;
return (m1 + m2) / 2.0;
}