Opa, eu estou tendo dificuldade para conseguir terminar este programa, sou iniciante em programação e com Java.
Tenho que criar um programa de caixa eletrônico, onde o mesmo precisa ter de entrada um valor (inteiro) e como saída precisa aparecer o total de cédulas que será “sacado”.
Até agora consegui criar uma parte, porém eu não sei como balancear, por exemplo, o valor que quero sacar é de 1652, o programa está saindo:
25 notas de 50
62 notas de 20
125 notas de 10
250 notas de 5
626 notas de 2
Por favor, se puderem me ajudar a chegar a uma lógica para balancear…
Meu código:
import javax.swing.JOptionPane;
/**
-
Contador de cedulas
-
@author matskira
-
@version 0.1
*/
public class CaixaEltronico {
static int valor;
public static void calcular(int valor){
int[] cedulas = {50,20,10,5,2};
for(int i = 0; i < cedulas.length; i++){
if(valor > 3000) {
JOptionPane.showMessageDialog(null, "Valor de saque limite diario eh de 3000!");
}
else {
if( valor >= cedulas[i] ){
int resultado = valor/cedulas[i];
System.out.println( resultado + " notas de " + cedulas[i]);
}
}
}
}
public static void main(String[] args) {
calcular (valor = Integer.parseInt(JOptionPane.showInputDialog(“Digite o valor que deseja sacar:”)));
}
}
Pelo que eu entendi, a pergunta que você quer resover é: “dado um valor e as notas disponíveis (todas, digamos), qual a forma de dividir esse valor usando a menor quantidade de notas possíveis?”
Se for, esse problema você resolve utilizando divisões inteiras (quocientes e restos). No seu exemplo, com 1652, seria feito da seguinte forma:
- Qual a maior nota que eu posso usar? 100.
- Em quantas partes inteiras eu consigo dividir 1652 por 100? 16 (16 notas de 100 vira parte da solução)
- Se eu tirar 1600 (16 notas de 100) de 1652, quanto sobra? 52
- Qual a maior nota que eu posso usar agora? 50
- Em quantas partes inteiras eu consigo dividir 52 por 50? 1 (1 nota de 50 vira parte da solução)
- Se eu tirar 50 (1 nota de 50) de 52, quanto sobra? 2
- Qual a maior nota que eu posso usar agora? 20
- Em quantas partes inteiras eu consigo dividir 2 por 20? 0
- Se eu tirar 0 (0 notas de 20) de 2, quanto sobra? 2 (0 notas de 20 vira parte da solução)
Se você reparar, existe uma repetição nessa estrutura. O desafio é codificar isso usando um loop e ifs. No final você vai ter algo do tipo: 16 notas de 100, 1 nota de 50, 0 notas de 20, 0 notas de 10, 0 notas de 5, 1 nota de 2.
Em Java, dados dois int
, o operador de quociente é /
e o de resto é %
.
Essa explicação assume que o número de notas disponíveis é infinito. Fica um pouquinho mais complicado se tiver um limite de quantas notas de cada tipo pode usar, mas não é tão complicado, basta você impor esse limite quando calcular o quociente, ao invés de utilizar o resultado sem checar nada.
1 curtida
Obrigado, me ajudou muito.