Gente não faz sentido, coloquei no vscode meu código e ta pegando exatamente como a resposta quer e no beecrowd não pega, o que eu faço?
var input = require('fs').readFileSync('/dev/stdin', 'utf8');
var lines = input.split('\n');
/**
- Escreva a sua solução aqui
- Code your solution here
- Escriba su solución aquí
*/
const valor = parseFloat(lines.shift());
const mod100 = valor % 100;
const mod50 = mod100 % 50;
const mod20 = mod50 % 20;
const mod10 = mod20 % 10;
const mod5 = mod10 % 5;
const mod2 = mod5 % 2;
const moe1 = mod2 % 1;
const moe50 = moe1 % 0.50;
const moe25 = moe50 % 0.25;
const moe10 = moe25 % 0.10;
const moe5 = moe10 % 0.05;
const notas100 = Math.floor(valor / 100);
const notas50 = Math.floor(mod100 / 50);
const notas20 = Math.floor(mod50 / 20);
const notas10 = Math.floor(mod20 / 10);
const notas5 = Math.floor(mod10 / 5);
const notas2 = Math.floor(mod5 / 2);
const moedas1 = Math.floor(mod2 / 1);
const moedas50 = Math.floor(moe1 / 0.50);
const moedas25 = Math.floor(moe50 / 0.25);
const moedas10 = Math.floor(moe25 / 0.10);
const moedas5 = Math.floor(moe10 / 0.05);
const moedas01 = Math.floor(moe5 / 0.01);
console.log('NOTAS:');
console.log(${notas100} nota(s) de R$ 100.00);
console.log(${notas50} nota(s) de R$ 50.00);
console.log(${notas20} nota(s) de R$ 20.00);
console.log(${notas10} nota(s) de R$ 10.00);
console.log(${notas5} nota(s) de R$ 5.00);
console.log(${notas2} nota(s) de R$ 2.00);
console.log('MOEDAS:');
console.log(${moedas1} moeda(s) de R$ 1.00);
console.log(${moedas50} moeda(s) de R$ 0.50);
console.log(${moedas25} moeda(s) de R$ 0.25);
console.log(${moedas10} moeda(s) de R$ 0.10);
console.log(${moedas5} moeda(s) de R$ 0.05);
console.log(${moedas01} moeda(s) de R$ 0.01);
Marcele Eller Gusmão Moura @marceleellerOi Gabriela, fiz esse post sobre esse exercício, teve até mais contribuições com a solução.
Notas e Moedas - Dicatenta assim:
const moedas01 = Math.floor(Math.round(moe5 / 0.01));- GGabriela Daniel Moura @gabimoura
meu deussssss, me salvou demais, já tava aqui quebrando a cabeça sem entender nada. Muito obrigada!!
- Em resposta amarceleeller⬆:
marcelo jhones @MarceloJhonesDevBoa, e isso acontece porque cada vez que você vai "quebrando" o valor passado com as operações de mod fica uma sobra no final e se você não arredondar o valor na última operação as vezes sobra por exemplo 0,019 que sem arredondar ao dividir por 0.01 retorna o valor de 1, ou seja 1 moeda de 1 centavo. Mas ainda ficou sobrando 0.009 que é quase que 1 centavo. Ou seja com o arredondamento são retornado 2 moedas de 1 centavo.
- Em resposta amarceleeller⬆:VVerônica Paz de Oliveira @veronicaPaz
Ajudou muito!! Estava quebrando a cabeça, pois estava usando Math.trunc() e estava dando erro no último cálculo. Obrigada!
- Em resposta amarceleeller⬆:TTom Silva @TomSilva
Também tive bastante dificuldade com esse exercício, so da erro na ultima linha do valor "0.1", vai me ajudar muito esse post
Em resposta agabimoura⬆:Daniel Carvalho @DanielCarvalhooi gabriela essa questão eu fiz um pouco diferente vou deixar aqui como exemplo, abs.
let num = parseFloat(lines[0]);
let nota100 = parseInt(num / 100);
let resto = parseFloat(num % 100);let nota50 = parseInt(resto / 50);
resto = resto % 50;let nota20 = parseInt(resto / 20);
resto = resto % 20;let nota10 = parseInt(resto / 10);
resto = resto % 10;let nota5 = parseInt(resto / 5);
resto = resto % 5;let nota2 = parseInt(resto / 2);
resto = resto % 2;let moeda1 = parseInt(resto / 1);
resto = resto % 1;let moeda50 = parseInt(resto / 0.5);
resto = resto % 0.5;let moeda25 = parseInt(resto / 0.25);
resto = resto % 0.25;let moeda10 = parseInt(resto / 0.1);
resto = resto % 0.1;let moeda5 = parseInt(resto / 0.05);
resto = resto % 0.05;let moeda01 = parseInt(resto.toFixed(2) / 0.01);
console.log("NOTAS:");
console.log(${nota100} nota(s) de R$ 100.00);
console.log(${nota50} nota(s) de R$ 50.00);
console.log(${nota20} nota(s) de R$ 20.00);
console.log(${nota10} nota(s) de R$ 10.00);
console.log(${nota5} nota(s) de R$ 5.00);
console.log(${nota2} nota(s) de R$ 2.00);
console.log("MOEDAS:");
console.log(${moeda1} moeda(s) de R$ 1.00);
console.log(${moeda50} moeda(s) de R$ 0.50);
console.log(${moeda25} moeda(s) de R$ 0.25);
console.log(${moeda10} moeda(s) de R$ 0.10);
console.log(${moeda5} moeda(s) de R$ 0.05);
console.log(${moeda01} moeda(s) de R$ 0.01);
Alexandre Jorge de Paiva @alexandrePaiva"resto" é declarado apenas uma vez e a cada passada do código, vai assumindo um novo valor conforme as notas vão decrescendo de valor e, consequentemente com as moedas. É isso? rs
Daniel Carvalho @DanielCarvalhoisso aí, Alexandre. A variável "resto" é atualizada a cada passo para representar o valor restante após a distribuição das notas e moedas, garantindo que o valor seja decomposto progressivamente em unidades menores.
Em resposta agabimoura⬆:Natália Stoll Nogueira @nataliastollDá pra fazer com laço tbm:
var input = require('fs').readFileSync('/dev/stdin', 'utf8'); var lines = input.split() var valor = parseFloat(lines); let cedula = [100.00, 50.00, 20.00, 10.00, 5.00, 2.00, 1.00, 0.50, 0.25, 0.10, 0.05, 0.01]; let aux = 0; console.log("NOTAS:"); for (let i = 0; i < 6; i++) { aux = parseInt(valor / cedula[i]); console.log(`${aux} nota(s) de R$ ${cedula[i].toFixed(2)}`); valor = valor % cedula[i]; } console.log("MOEDAS:"); for (let j = 6; j < cedula.length; j++) { aux = parseInt(valor / cedula[j]); console.log(`${aux} moeda(s) de R$ ${cedula[j].toFixed(2)}`); valor = valor % cedula[j] + 0.00001; }aí ajusta assim:
valor = valor % cedula[j] + 0.00001;- TTom Silva @TomSilva
fiz varios testes mostrado pelos colegas, e esse acabou de resolver meu problema, muito obrigado.
- CEm resposta agabimoura⬆:Camila Vieira @CamilaVieira
Acredito que dá pra usar o método .trunc() também.
let moedas01 = Math.trunc(moe5 / 0.01)- GGabriela Daniel Moura @gabimoura
interessante, vou fazer o teste com o trunc() depois. Muito obrigada.
Em resposta agabimoura⬆:Lucas Stutz @lucas.stutzSó complementando pessoal, acho que seria legal tentarmos usar os laços de repetição para os exercícios! Fiz metade com o laço de repetição para visualização:
var input = require('fs').readFileSync('/dev/stdin', 'utf8');
var lines = input.split('\n');let n = parseFloat(lines.shift()).toFixed(2);
const notas = [100, 50, 20, 10, 5, 2];
console.log("NOTAS:")
for (let nota of notas){
let qtdNotas = parseInt(n/nota);
console.log(${qtdNotas} nota(s) de R$ ${nota}.00);
n = n % nota;
}console.log("MOEDAS:");
console.log(${Math.floor(n/1).toFixed(0)} moeda(s) de R$ 1.00);
n %= 1.00;
console.log(${Math.floor(n/0.50).toFixed(0)} moeda(s) de R$ 0.50);
n %= 0.50;
console.log(${Math.floor(n/0.25).toFixed(0)} moeda(s) de R$ 0.25);
n %= 0.25;
console.log(${Math.floor(n/0.10).toFixed(0)} moeda(s) de R$ 0.10);
n %= 0.10;
console.log(${Math.floor(n/0.05).toFixed(0)} moeda(s) de R$ 0.05);
n %= 0.05;
console.log(${Math.floor(Math.round(n/0.01)).toFixed(0)} moeda(s) de R$ 0.01);
n %= 0.01;
Lucas Stutz @lucas.stutzcomplementando aqui minha resposta, uma observação importante é que quando passamos para aqui o código, vem sem a crase! Se só copiar o código e colar, vai dar erro!