static void Main(string[] args) { BancoNegocio bancoNegocio = new BancoNegocio(); BancoValidacao bancoValidacao = new BancoValidacao(); IEnumerator <int> cedulasDisponiveisParaSaque; do { Console.Clear(); //Questiona usuário quanto ao número de notas à serem sacadas do caixa eletrônico Console.Write("Informe o valor que deseja sacar: "); var retorno = Console.ReadLine(); int valorParaSaque; cedulasDisponiveisParaSaque = bancoNegocio.GerarNotasDisponiveisEmTerminal(); //Caso o valor apresentado seja válido if (int.TryParse(retorno, out valorParaSaque)) { valorParaSaque = Convert.ToInt32(retorno); bool analiseCedulas = bancoValidacao.VerificarCedulasDisponiveis(valorParaSaque, cedulasDisponiveisParaSaque); if (analiseCedulas == true) { var lista = bancoNegocio.SacarNotasCliente(valorParaSaque, cedulasDisponiveisParaSaque); Console.WriteLine($"Valor para saque é de: R$ {valorParaSaque},00"); foreach (var item in lista) { Console.WriteLine($"R$ {item},00"); } } else { //Sistema irá entrar nessa condição caso o usuário selecione um valor que não é válido conforme notas //ex. 815, 15, 912, 12, 31 Console.Clear(); ExibirRetornoDeValorInvalido(valorParaSaque.ToString(), cedulasDisponiveisParaSaque); } } else { //Sistema irá entrar nessa condição caso o usuário selecione um valor que não seja padrão para o tipo de nota informado //ex. 10,90, 10.90, 1.99, 20.00, 20,00 ExibirRetornoDeValorInvalido(retorno, cedulasDisponiveisParaSaque); } //Verifica se usuário deseja realizar novo saque Console.Write("Precione ENTER para sair, ou aperte qualquer tecla para realizar novo saque..."); //novoSaque = Console.ReadLine(); } while (Console.ReadKey().Key != ConsoleKey.Enter); }
public bool VerificarCedulasDisponiveis(int valorParaSaque, IEnumerator <int> cedulasDisponiveisParaSaque) { BancoNegocio bancoNegocio = new BancoNegocio(); while (cedulasDisponiveisParaSaque.MoveNext()) { var nota = cedulasDisponiveisParaSaque.Current; int aux = valorParaSaque / nota; valorParaSaque -= aux * nota; } cedulasDisponiveisParaSaque.Reset(); if (valorParaSaque != 0) { return(false); } else { return(true); } }