Esta função recebe um ponto flutuante n e o arredonda a partir da seguinte regra:
  • se a parte fracionária de n for menor que 0.25 , arredonde a parte fracionário para zero e retorne o número arredondado. Ex.: 3.33 \rightarrow 3.00
  • se a parte fracionária de n for maior ou igual a 0.25 e menor que 0.75 , arredonde a parte fracionária para 0.5 e retorne o número arredondado. Ex.: 3.70 \rightarrow 3.50
  • se a parte fracionária de n for maior ou igual a 0.75 , arredonde para o próximo inteiro. Ex.: 3.75 \rightarrow 4.00
float arredonda(float n) {
// Primeira funcao, aqui
}

Passo 1

O enunciado pede uma função em C que receba um valor de ponto flutuante n e o arredonde segundo três faixas da parte fracionária:
  1. se \text{frac}(n)<0,25, retorna só a parte inteira;
  2. se 0,25 \le \text{frac}(n)<0,75, retorna a parte inteira mais 0,5;
  3. se \text{frac}(n)\ge 0,75, retorna o próximo inteiro.
    Vamos usar funções da biblioteca <math.h> para extrair a parte inteira via \text{floorf} e calcular a parte fracionária.

Passo 2

Calcular a parte inteira e a parte fracionária de n:
  • inteiro = \lfloor n\rfloor usando \text{floorf}(n).
  • frac = n - inteiro.

Passo 3

Comparar frac com os limites 0,25 e 0,75 usando uma cadeia de if/else if/else:
  • se frac < 0,25 retorna inteiro;
  • senão se frac < 0,75 retorna inteiro +0,5;
  • caso contrário retorna inteiro +1,0.

Passo 4

Garantir que a função retorne sempre um float e inclua <math.h> para usar \text{floorf}.

Resposta

#include <math.h>

float arredonda(float n) {
 float inteiro = floorf(n);
 float frac = n - inteiro;
 if (frac < 0.25f) {
 return inteiro;
 } else if (frac < 0.75f) {
 return inteiro \(+0.5\)f;
 } else {
 return inteiro \(+1.0\)f;
 }
}

Exercícios relacionados