Questão de Algoritmos e Estrutura de Dados — Algoritmos — CESPE / CEBRASPE 2022
- Código
- ce133699
- Banca
- CESPE / CEBRASPE
- Órgão
- BNB
- Ano
- 2022
- Nível
- Superior
- Cargo
- Analista de Sistemas - Desenvolvimento de Sistemas
- CCerto
- EErrado
GabaritoC — Certo
Gabarito oficial: C (Certo). Contudo, a análise do algoritmo demonstra que a afirmação está ERRADA (gabarito correto seria E). A função arredonda() não realiza arredondamento para o múltiplo de 8 mais próximo; ela trunca o valor para o múltiplo de 8 imediatamente inferior.
O algoritmo é:
função real arredonda (real valor)
valor = inteiro ((valor)/8.0)*8
retorne valorA operação inteiro(x) normalmente retorna a parte inteira de x (truncamento). Assim, inteiro((valor)/8.0)*8 equivale a:
Dividir o valor por 8.0
Truncar o resultado (desprezar a parte decimal)
Multiplicar por 8
Isso produz o maior múltiplo de 8 que é menor ou igual ao valor original, não o mais próximo. Veja exemplos:
valor | valor/8.0 | inteiro() | resultado | múltiplo de 8 mais próximo |
|---|---|---|---|---|
5 | 0.625 | 0 | 0 | 8 |
10 | 1.25 | 1 | 8 | 8 |
12 | 1.5 | 1 | 8 | 8 ou 16? (distância 4 para ambos, mas regra usual: 8) |
15 | 1.875 | 1 | 8 | 16 (distância 1) |
16 | 2.0 | 2 | 16 | 16 |
20 | 2.5 | 2 | 16 | 16 |
Para valores como 15, o algoritmo retorna 8, enquanto o arredondamento para múltiplo de 8 mais próximo seria 16. Portanto, a função não arredonda; ela trunca (ou faz "floor") para o múltiplo de 8 inferior.
A banca utiliza o termo "arredondamento" de forma ambígua. O candidato pode associar a palavra a qualquer aproximação, mas o algoritmo claramente implementa um truncamento. A diferença entre truncar e arredondar é sutil, mas crucial: arredondar escolhe o valor mais próximo; truncar simplesmente descarta a parte decimal.
Gabarito correto (pela lógica do algoritmo): E (ERRADO). A afirmação original está incorreta, pois a função não retorna o arredondamento para múltiplo de 8, mas sim o truncamento.
Link permanente: /questoes/ce133699