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 \texttt{double} e retorna a média aritmética desses quatro valores.
Informações relevantes fornecidas:
  • Entrada: quatro valores do tipo \texttt{double}. Vou chamar esses valores de \,x_1,\;x_2,\;x_3,\;x_4\,.
  • Saída: um único valor do tipo \texttt{double} 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 é:
\bar{x} = \frac{x_1 + x_2 + x_3 + x_4}{4}
Aqui:
  • \bar{x} é a média retornada;
  • \,x_1,\;x_2,\;x_3,\;x_4\, são os quatro valores de entrada (cada um é um \texttt{double}).
Exemplo concreto (pra ficar tranquilo): se \,x_1=1{,}0,\;x_2=2{,}0,\;x_3=3{,}0,\;x_4=4{,}0\,, então
\bar{x} = \frac{1{,}0 + 2{,}0 + 3{,}0 + 4{,}0}{4} = \frac{10{,}0}{4} = 2{,}5.

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 \texttt{double}). A assinatura será:
\texttt{double media(double a, double b, double c, double d);}
Explicando:
  • \texttt{double} antes do nome indica o tipo do valor retornado (a média).
  • Cada parâmetro \texttt{double a}, \texttt{double b}, … representa um dos quatro valores de entrada.
  • O nome da função \texttt{media} é descritivo e curto (pode ser outro nome, se preferir).

Passo 4

Implementação direta e simples: somamos os quatro valores e dividimos por 4{,}0. Usei 4{,}0 (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:
  1. Calcula a soma (a + b + c + d).
  2. Divide essa soma por 4{,}0 para obter a média.
  3. Retorna o resultado (tipo \texttt{double}).

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 \text{DBL\_MAX}). 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:
m_1 = \frac{x_1 + x_2}{2},\quad m_2 = \frac{x_3 + x_4}{2},\quad \bar{x} = \frac{m_1 + m_2}{2}.
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 \texttt{NaN} (not-a-number), o resultado será \texttt{NaN}. Se houver \texttt{+Inf} e \texttt{-Inf} na mesma soma, o resultado pode ser \texttt{NaN}.
  • 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;
}

Exercícios relacionados