Caixa Eletronico (Trabalho da Facul)

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…