Ir ao conteúdo

Posts recomendados

Postado

Esse é o desafio contando cédulas...

Já fiz de tudo e não consigo resolver, será que alguém pode me ajudar?

 

 

Desafio

Faça a leitura de um valor inteiro. Em seguida, calcule o menor número de notas possíveis (cédulas) onde o valor pode ser decomposto. As notas que você deve considerar são de 100, 50, 20, 10, 5, 2 e 1. Na sequência mostre o valor lido e a relação de notas necessárias.

Entrada

Você receberá um valor inteiro N (0 < N < 1000000).

Saída

Exiba o valor lido e a quantidade mínima de notas de cada tipo necessárias, seguindo o exemplo de saída abaixo. Após cada linha deve ser imprimido o fim de linha.

 

Exemplo de EntradaExemplo de Saída

576

576
5 nota(s) de R$ 100,00
1 nota(s) de R$ 50,00
1 nota(s) de R$ 20,00
0 nota(s) de R$ 10,00
1 nota(s) de R$ 5,00
0 nota(s) de R$ 2,00
1 nota(s) de R$ 1,00

 

 

Esse é o código:
 

let n = parseInt(gets());
let quantidadeNotas = 0;
let cedulas = [100,50,20,10,5,2,1];


// Função responsável por contar as notas a partir de um valor.
function contaNotas(valor){
  quantidadeNotas = parseInt(n/valor);

  // TODO Subtraia de "n" a "quantidadeNotas" multiplicada por seu respectivo "valor" (parâmetro).
  n -= ;
   
  
  console.log(`${quantidadeNotas} nota(s) de R$ ${valor},00`);
}

console.log(n);


for(let cedula in cedulas){    
    contaNotas(cedulas[cedula]);
    }

 

Postado

Você está esquecendo de resetar os valores das variáveis. Esse é o problema de usar variáveis em scropo global, se você fizer um teste de mesa vai perceber o problema rapidamente.

 

Você tem duas soluções, vou apresentar as duas:

 

A primeira solução é remover a variável quantidadeNotas do scopo global da aplicação e colocar a definição na função contaNotas, veja:

// eu modifiquei essa linha para colocar um valor padrão (fica mais fácil testar assim)
let n = 576;
let cedulas = [100,50,20,10,5,2,1];


// Função responsável por contar as notas a partir de um valor.
function contaNotas(valor){
  let quantidadeNotas = parseInt(n/valor);
  // TODO Subtraia de "n" a "quantidadeNotas" multiplicada por seu respectivo "valor" (parâmetro).
  n -= quantidadeNotas*valor;

  console.log(`${quantidadeNotas} nota(s) de R$ ${valor},00`);
}


for(let cedula in cedulas){    
  contaNotas(cedulas[cedula]);
}

 

A segundo solução é manter a variável quantidadeNotas no scopo global da aplicação, porém resetar o valor dela ao final da função, veja:

let n = 576;
let quantidadeNotas = 0;
let cedulas = [100,50,20,10,5,2,1];


// Função responsável por contar as notas a partir de um valor.
function contaNotas(valor){
  quantidadeNotas = parseInt(n/valor);
  // TODO Subtraia de "n" a "quantidadeNotas" multiplicada por seu respectivo "valor" (parâmetro).
  n -= quantidadeNotas*valor;

  console.log(`${quantidadeNotas} nota(s) de R$ ${valor},00`);
  quantidadeNotas = 0;
}


for(let cedula in cedulas){    
  contaNotas(cedulas[cedula]);
}

 

Ambas soluções devem funcionar, porém, a primeira solução é a recomendada. Só é necessário usar a segunda solução caso você for usar quantidadeNotas fora da função contaNotas e mesmo assim o ideal seria declarar a variavel no scopo da função contaNotas e retornar ela ao final da execução.

Provavelmente seu professor ainda está explicando conceitos de variaveis mutáveis simples, então não considere meu texto como uma aula e sim como uma "dica", mas na frente ele vai ensinar esses conceitos e você vai entender mais facilmente, por enquanto se sinta livre para adotar qualquer uma das duas soluções.

 

Porém, eu recomendo as seguintes leituras:

https://developer.mozilla.org/en-US/docs/Glossary/Scope

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!