DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Analisando as notas!

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:

  1. Nota = 84.(Arredondar para 85, pois 85-84 é menor que 3)
  2. Nota = 29. (Não arredonda, nota menor que 40)
  3. 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; })
}

Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Com isso,finalizamos mais uma edição. Até a próxima

Top comments (0)