Galera, sou iniciante, e meu professor pediu pra elaborarmos um caixa eletronico q crie uma string para armazenar as notas de 100,50,20,10,5 e 2, o meu maior problema esta na hora do saque, pois terei que verificar se o valor pode pagar das notas mais altas para as menores, porem como o caixa nao tem nota de um, tenho um problema, pois valores terminados com 1,3, 6 e 8 se tornam praticamente impossiveis de se sacar, pois 1 e 3 naum podera sacar nota de 5 nem de 2, e o 6 e o 8 , vc consegue sacar 5, mas naum tem como sacar 2 pois volta ao problema do 1 e 3, então teria que fazer ele verificar e pular alguma nota para que possa ser sacado, tornando impossivel apenas ser sacado os valores 1 e 3, sendo portanto possivel sacar valores como 11,13, 16, 18 e por ae vai.
Desde ja agradeço a atenção e a ajuda de todos
esse exercicio das notas, ja rolou varias vezes aki no forum, da um search, q c axa ^^ google…
ja fiz isso, mas ninguem soube me ajudar, pois ja fiz td oq axei nos foruns da vida e mesmo assim continua naum dando certo
Tá aí um problema de caixa eletrônico que não se vê todo dia.
Eu pensaria em resolver o último digito de duas formas, normal com notas de 5 e 2, ou somente com notas de 2. Caso a simulação normal dê certo, use ela, caso contrário faça a simulação de somente notas de 2. Caso não dê certo com nenhuma das duas, aborte a operação de saque e fale que não há dinheiro o suficiente em caixa.
o problema eh q teria que fazer a verificação se eh possivel pagar com notas de 5, caso naum seja, pular para as notas de 2,
e eh isso q naum estou conseguindo fazer
eu naum kero o codigo em si, queria a logica pra q eu possa desenvolver o codigo
Teste isso para ver se ajuda… fiz rapidinho aki, deverá fazer algumas melhorias…
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class CaixaEletronico {
private final Integer[] notas = new Integer[] { 100, 50, 20, 10, 5, 2 };
private int valorSaque = 0;
public int getValorSaque() {
return valorSaque;
}
public void setValorSaque(int valorSaque) {
this.valorSaque = valorSaque;
}
public List<Integer> getNotas() {
return Collections.unmodifiableList(Arrays.asList(notas));
}
private boolean sacar(final Integer valor) {
if(valor <= 0) {
throw new IllegalArgumentException();
}
boolean status = false;
int resto = valor % 100;
if((resto) == 0 ||
((resto = valor % 50) == 0) ||
((resto = valor % 20) == 0) ||
((resto = valor % 10) == 0) ||
((resto = valor % 5) == 0) ||
((resto = valor % 2) == 0)) {
status = true;
}
return status;
}
public static void main(String[] args) {
CaixaEletronico caixaEletronico = new CaixaEletronico();
boolean status = false;
for(int i = 1; i < 500; i++) {
status = caixaEletronico.sacar(i);
System.out.println(i + " = " + (status ? "Saque permitido." : "Não é possivel sacar esse valor."));
}
}
}
não deu certo kra, mas vlw a ajuda
o codigo ateh funciona, mas naum atende as necessidades que o professor exigiu, pois não posso criar novos metodos, tenho q usar os q ele ja disponibilizou e naum posso usar nem get nem set, e tem uma coisa nova q soh descobri hj, pois faltei na aula q ele passou o exercicio, que eh limite de notas, no maximo 30 notas por saque.
Poderia então postar o código que já fez, baseado nessas regras?
resolvendo seu problema…
a saber que… o único numero impar que vc dispoem é o 5… portanto… se tiver impar, vc deverá retirar apenas 1 nota 5, assim o numero vira par… e depois so fazer a conta normalmente que vc nunca tera problemas
o problema eh, tenho 53, dou uma nota de 50 e naum tenho como dar nota de 3, entao teria q dividir os 50 tbm.
esse é o erro… 53 é impar… então primeiro vc da 1 nota de 5… depois faz a conta do resto, depois disso vc não da + notas 5…
… vamos as contas
53 é impar… então
1 nota 5…
sobram 48 …
2 notas de 20
sboram 8 … (lembre-se que não há mais notas de 5 a fornecer)
4 notas de 2
pronto ta ai a resposta…
2x20 + 1x5 + 4x2 = 53
Bruno, a parte de saque eu naum consegui fazer ainda, tah mto dificil mesmo, amanha posto aki o enunciado do problema.
desde ja muito obrigado a todos pela ajuda
uma das exigencias do professor eh q comesse sempre pela maior nota, por exemplo, se for 53, como naum posso dar 50, a 1º nota teria q ser 20 e ae por diante
duvida, vc tem limite de notas de algum valor ?
[quote=kdt]uma das exigencias do professor eh q comesse sempre pela maior nota, por exemplo, se for 53, como naum posso dar 50, a 1º nota teria q ser 20 e ae por diante
[/quote]
hora vc esta começando pela nota + alto… mas pela nota + alta possivel… e esse é o seu problema… vc tem que entender que não há como contabilizar números impares, exceto usando a nota 5
tenho certeza, que o que seu professou quis falar é… dê a maior combinação possivel de notas, e diante das suas possibilidades, é assim que se faz a conta
…
vc deve fazer é… se (1) ou (3) então Impossivel contabilizar
se impar … restante -= 5; e numeroDe5=1;
depois vai fazer…
[code]numeroDe50 = restante/50;
restante -= numeroDe50 * 50;
numeroDe20 = restante/20;
restante -= numeroDe20 * 20;
numeroDe10 = restante/10;
restante -= numeroDe10 * 10;
numeroDe2 = restante/2;
restante -= numeroDe2 * 2;[/code]
tenho o limite de 30 notas por saque, e tipo o caixa ja tem uma quantidade de notas carregadas.
teria q ser algo +/- assim.
53 > 50 (ok)
53 - 50 = 3 (erro)
53 > 20 (ok)
53 - 20 = 33 (ok)
33 > 20 = 13 (ok)
33 - 20 = 13 (ok)
13 >= 10 (ok)
13 - 10 = 3 (erro)
13 >= 5 (ok)
13 - 5 = 8 (ok)
8 >= 5 (ok)
8 - 5 = 3 (erro)
8 >= 2 (ok)
8 - 2 = 6 (ok)
6 >= 5 (ok)
6 - 5 = 1 (erro)
6 >= 2 (ok)
6 - 2 = 4 (ok)
4 >= 2 (ok)
4 - 2 = 2 (ok)
2 >= 2 (ok)
2 - 2 = 0
o problema tah sendo pra fazer essa conta
como fazer pra ele pular determinados valores e ao mesmo tempo naum deixar sacar mais de 30 notas
[quote=kdt]53 > 50 (ok)
53 - 50 = 3 (erro)
53 > 20 (ok)
53 - 20 = 33 (ok)
33 > 20 = 13 (ok)
33 - 20 = 13 (ok)
13 >= 10 (ok)
13 - 10 = 3 (erro)
13 >= 5 (ok)
13 - 5 = 8 (ok)
8 >= 5 (ok)
8 - 5 = 3 (erro)
8 >= 2 (ok)
8 - 2 = 6 (ok)
6 >= 5 (ok)
6 - 5 = 1 (erro)
6 >= 2 (ok)
6 - 2 = 4 (ok)
4 >= 2 (ok)
4 - 2 = 2 (ok)
2 >= 2 (ok)
2 - 2 = 0
[/quote]
vamos a conta ??
20 x 2
5x1
2x4
tadan… vc xegou no mesmo resutaldo… porem com um comportamento que gasta muito mais processo, sem sentido… o.O … vc q sabe como quer fazer
… o fato é… o único numero impar q vc tem é o um 5… tem impar, vai ter q tirar a nota 5… depois faz as contas normais, q tudo dará certo…