GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Somatório de notas (cédulas) em um caixa eletrônico

java
programação
Tags: #<Tag:0x00007fbf1c966210> #<Tag:0x00007fbf1c9660d0>

#1

Olá, gostaria de uma ajuda, estou com um problema, que estou fazendo um trabalho que tenho meio que dizer quando notas saiam do caixa na hora do saque, por exemplo: 550 reais são 5 notas de 100 e 1 de 50, não sei fazer isso, unica coisa que consegui é tipo informar o valor de 550 e sai assim 100 100 100 100 100 50, por favor me ajudem?


#2

Vc precisa ir fazendo o teste com divisões pelo valor da cédula maior para a menor:

550 / 100 = 5.5 - Pega só a parte inteira, são 5 notas de 100 q dá 500, sobra 50 ai segue na mesma lógica.


#3

Olá Menguer, pelo que entendi acho que esse código deve resolver.

public class Principal {
	
	public static void calcular(double valor){
		int[] cedulas = {100,50,25,10,5,2};
		
		for(int i = 0; i < cedulas.length; i++){
			if( valor >= cedulas[i] ){
				System.out.println( (int)valor/cedulas[i] + " notas de " + cedulas[i]);
				valor = valor % cedulas[i];
			}
			
		}
		System.out.println("Sobram: " +valor);
	}
	
	public static void main(String[] args) {
		calcular(1553.5);
	}
}

Espero que tenha ajudado.


#4

Boa tarde!

Eu sou iniciante e estou aprendendo, eu fiz um programa em caixa eletrônico. Ele está funcionando, porém eu tenho uma dúvida: como faço para bloquear uma mensagem quando a nota não será utilizada no saque, por exemplo: eu vou sacar R$ 238,00. Ele vai mostrar as mensagens de todas as notas.

Ex:
2 notas de 100
0 notas de 50 -> essa nota não vai ser utilizada, então como faço para ‘bloquear’ essa mensagem dentro do else?
3 notas de 10
1 notas de 5
3 notas de 1

Meu código:

usuario = new Scanner(System.in);

	System.out.println("Digite o valor que você deseja sacar. Valor mínimo: R$10,00. Valor máximo: R$600,00");
	int valor = usuario.nextInt();
	
	int nota_100 = 100;
	int nota_50 = 50;
	int nota_10 = 10;
	int nota_5 = 5;
	int nota_1 = 1;	

	if(valor >= 10 && valor <= 600) {
		if(nota_100 > 0) {
			nota_100 = valor / 100; 
			valor = valor % 100;   
			System.out.println(nota_100 + " notas de 100");
		} 
		if(nota_50 > 0) {
			nota_50 = valor / 50;
			valor = valor % 50;
			System.out.println(nota_50 + " notas de 50");
		}
		if(nota_10 > 0) {
			nota_10 = valor / 10;
			valor = valor % 10;
			System.out.println(nota_10 + " notas de 10");
		}if(nota_5 > 0) {
			nota_5 = valor / 5;
			valor = valor % 5;
			System.out.println(nota_5 + " notas de 5");
		}if(nota_1 > 0) {
			nota_1 = valor / 1;
			valor = valor % 1;
			System.out.println(nota_1 + " notas de 1");
		}
	}else {
		System.out.println("Não é possível realizar o saque");
	}	

Criei somente no método main mesmo, alguém pode me ajudar? :slight_smile:


#5

No seus ifs, você está comparando as variáveis nota_100, nota_50 com zero. Elas sempre serao maior que zero, pois o valor delas é fixo. O que precisa fazer é comparar a variável valor com cada nota:

   if (valor >= nota_100) { }
   if (valor >= nota_50) { }

#6

Nossa, deu certo! Obrigada! :+1: