DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Prazos na Biblioteca

Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, iremos ajudar a criar um sistema de biblioteca que irá multar se necessário, os que entregam os livros após o prazo determinado, ele irá calcular os com base na data inicial que ele foi pego e sua devolução e analisar se é necessário multar ou não. Vejamos agora uma explicação detalhada e sua resolução.

Library Fine -

A biblioteca local precisa de sua ajuda! Dadas as datas de devolução esperadas e reais de um livro da biblioteca, crie um programa que calcule a multa (se houver necessidade). A estrutura de taxas é a seguinte:

  • Se o livro for devolvido antes ou na data prevista para devolução, nenhuma multa será cobrada.

  • Se o livro for devolvido após o dia previsto de devolução, mas ainda dentro do mesmo mês e ano da data prevista de devolução: 15 * números de dias atrasados.

  • Se o livro for devolvido após o mês de devolução esperado, mas ainda dentro do mesmo ano civil da data de devolução prevista: 500 * números de meses atrasados.

  • Se o livro for devolvido após o ano civil em que estava previsto, será aplicada uma multa fixa de 10,000.

Para que possamos entender corretamente, analisemos um exemplo:

  • d1, m1, y1: retorna data de entrega: dia, mês e ano.
  • d2, m2, y2: retorna data de vencimento: dia, mês e ano

d1,m1,y1 = 14,7,2018
d2,m2,y2 = 5,7,2018

Como o caso acima o livro foi entregue no dia 14, quando a data de vencimento da entrega era dia 5, o livro foi entregue com um atrasado de: 14-5 = 9 dias. Logo, a pessoa será taxada em: 15 * (14-5) = 135.

Vejamos agora e execução de nosso código:

function libraryFine(d1, m1, y1, d2, m2, y2) {
    // Write your code here
  if (y1 > y2){
    return 10000;
  } 

  if (y1 == y2 && m1 > m2){
    return 500 * (m1 - m2);
  }

  if (y1 == y2 && m1 == m2 && d1 > d2){
    return 15 * (d1 - d2);
    }    

  else {
    return 0;
  }  

}
Enter fullscreen mode Exit fullscreen mode

No código acima, foi passado todos os parâmetros anteriormente citados.

Ele começa declarando a função libraryFineque tem diversos parâmetros (d1, m1, y1, d2, m2, y2). Começamos com uma estrutura condicional ifque ao y1for maior que y2, retornaremos 10000.

Se y1for igual a y2 em1for maior quem2, a multa será: 500 * (m1-m2`).

Se o y1for igual a y2 e m1 for igualm2, mas d1for maior que d2, a multa será de: 15 * (d1-d2`).

E caso qualquer situação fora dessas acima aconteça, logo o livro foi entregue no prazo e com isso, o retorno será 0.

O input de resultado será:

2 7 1014
1 1 1014

input de resultado será: 3000
Enter fullscreen mode Exit fullscreen mode

Assim, concluímos mais um _Resolvendo problemas no HackerRank: _ até a próxima.

Top comments (0)