Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }