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;
}
}
No código acima, foi passado todos os parâmetros anteriormente citados.
Ele começa declarando a função libraryFine
que tem diversos parâmetros (d1, m1, y1, d2, m2, y2
). Começamos com uma estrutura condicional if
que ao y1
for maior que y2
, retornaremos 10000.
Se y1
for igual a y2 e
m1for maior que
m2, a multa será: 500 * (
m1-m2`).
Se o y1
for igual a y2 e
m1 for igual
m2, 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
Assim, concluímos mais um _Resolvendo problemas no HackerRank: _ até a próxima.
Top comments (0)