Olá, seja bem vindo a mais uma etapa do Resolvendo problemas no Hacker-Rank,nessa sessão iremos resolver a nota de alguns alunos. Veremos agora!
Grading Students -
Neste desafio, um professor chamado Sam, gosta de arredondar notas, mas apenas nas seguintes situações:
A diferença entre a nota e o multiplo de 5 mais próximo, for menor do que 3, arredondar a nota para o multiplo de 5.
Se o valor da nota for menor ou igual a 38, não arredondar, pois mesmo assim o aluno reprovará.
Vamos ver alguns exemplos práticos passados, tanto para entender o problema, como para efetuar o código posterior.
Exemplo:
- Nota = 84.(Arredondar para 85, pois 85-84 é menor que 3)
- Nota = 29. (Não arredonda, nota menor que 40)
- Nota = 57. (Não arredonda,(60 - 57 é 3 ou superior)
Então, vejamos a resolução:
function gradingStudents(grades) {
// Write your code here
return grades.map(newGrade => { let rounded = Math.ceil(newGrade/5) * 5;
return newGrade >= 38 && rounded - newGrade < 3? rounded: newGrade; })
}
O código acima é uma função que calcula as notas das turmas de estudantes de Sam. A função é chamada gradingStudents
e recebe como entrada um array de notas, representado por grades
.
A função utiliza o método map
para iterar sobre cada elemento do array de notas, calculando uma nova nota para cada estudante. A nova nota é obtida baseada nas leis ditas no início do artigo:
Ele calcula a nota arredondada para cima para o próximo múltiplo de 5, utilizando a função Math.ceil
e a divisão por 5. E se a diferença entre a nota original e a nota arredondada for menor que 3 e a nota original for maior ou igual a 38, então a nota arredondada é retornada. Caso contrário, a nota original é retornada. Depois a função retorna o map com todas as notas novas alteradas.
O resultado é:
75//passou
67//passou
40//passou
33//não passou
Com isso,finalizamos mais uma edição. Até a próxima
Top comments (0)