Loop for ATM

Asked

Viewed 754 times

1

I need to run this code until user asks to quit.

In case, it will inform the result at the end and follow up with a question to the user if he wants to continue using, then the code runs again until the user leaves.

namespace Caixa_Eletronico
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Caixa Eletronico");
            Console.WriteLine();
            Console.WriteLine();
            Console.Write("Digite o valor do saque: ");
            int valor = Convert.ToInt16(Console.ReadLine()); //recebendo o valor digitado pelo usuário.
            int n100 = valor / 100; //contagem das notas de 100R$
            int resto = valor - (n100 * 100); //valor menos as notas de 100.
            int n50 = resto / 50;//contagem das notas de 50R$
            resto = resto - (n50 * 50);
            int n20 = resto / 20;//contagem das notas de 20R$
            resto = resto - (n20 * 20);
            int n10 = resto / 10;//contagem das notas de 10R$
            resto = resto - (n10 * 10);
            int n5 = resto / 5;//contagem das notas de 5R$
            resto = resto - (n5 * 5);
            int n1 = resto / 1;//contagem das notas de 1R$
            resto = resto - (n1 * 1);
            Console.WriteLine();
            Console.WriteLine("Quantidade de notas:");
            Console.WriteLine();
            Console.WriteLine("Notas de 100R$:  " +n100);
            Console.WriteLine();
            Console.WriteLine("Notas de 50R$:  " +n50);
            Console.WriteLine();
            Console.WriteLine("Notas de 20R$:  " +n20);
            Console.WriteLine();
            Console.WriteLine("Notas de 10R$:  " +n10);
            Console.WriteLine();
            Console.WriteLine("Notas de 5R$:  " +n5);
            Console.WriteLine();
            Console.WriteLine("Notas de 1R$:  " +n1);
            Console.ReadKey();
        }
    }
}
  • 1

    Just put a while right after Main...

2 answers

4


You need to make a loop by adding an output condition. I chose to let the person type a negative number to leave, after all in the current form it would not make sense to accept a negative number.

I took advantage and organized and modernized the code (nomenclature standard), in addition to solving the problem that would break the application if the person did not enter a valid number, through the TryParse().

With better names for identifiers need no comments.

using static System.Console;
                    
namespace CaixaEletronico {
    public class Program {
        public static void Main(string[] args) {
            WriteLine("Caixa Eletronico\n\n");
            var valor = 0;
            while (valor > -1) {
                Write("Digite o valor do saque (-1 para sair): ");
                if (int.TryParse(ReadLine(), out valor) && valor > -1) {
                    int notas100 = valor / 100;
                    int resto = valor - (notas100 * 100);
                    int notas50 = resto / 50;
                    resto -= notas50 * 50;
                    int notas20 = resto / 20;
                    resto -= notas20 * 20;
                    int notas10 = resto / 10;
                    resto -= notas10 * 10;
                    int notas5 = resto / 5;
                    resto -= notas5 * 5;
                    int notas1 = resto / 1;
                    resto -= notas1 * 1;
                    WriteLine($"\nQuantidade de notas:\nNotas de 100R$:  {notas100}\n");
                    WriteLine($"Notas de 50R$:  {notas50}\n");
                    WriteLine($"Notas de 20R$:  {notas20}\n");
                    WriteLine($"Notas de 10R$:  {notas10}\n");
                    WriteLine($"Notas de 5R$:  {notas5}\n");
                    WriteLine($"Notas de 1R$:  {notas1}\n");
                }
            }
        }
    }
}

Behold working ideone. And in the .NET Fiddle. Also put on the Github for future reference.

2

To keep repeating until the user leaves, use a while, I already put for you a simple exit system, the person just type "out" and ready.

using System;

namespace Caixa_Eletronico
{
class Program
{
     static void Main(string[] args)
     {
        bool programa = true;
        while(programa){
        Console.WriteLine("Caixa Eletronico");
        Console.WriteLine("Para sair digite 'sair'");
        Console.WriteLine();
        Console.WriteLine();
        Console.Write("Digite o valor do saque: ");
        var r = Console.ReadLine();
        if (r == "sair")
        {
        Console.WriteLine(">> Deseja Mesmo sair? s/n <<");
        if (Console.ReadLine().ToUpper() != "n")
        {
        Console.Clear();
        continue;
        }
        programa = false;
        continue;
        }
        int valor = 0;
        try
        {
             valor = int.Parse(r);
        }
        catch {
            Console.WriteLine("Digite um número!");
            System.Threading.Thread.Sleep(2000);
            Console.Clear();
            continue;
        }
        int n100 = valor / 100; //contagem das notas de 100R$
        int resto = valor - (n100 * 100); //valor menos as notas de 100.
        int n50 = resto / 50;//contagem das notas de 50R$
        resto = resto - (n50 * 50);
        int n20 = resto / 20;//contagem das notas de 20R$
        resto = resto - (n20 * 20);
        int n10 = resto / 10;//contagem das notas de 10R$
        resto = resto - (n10 * 10);
        int n5 = resto / 5;//contagem das notas de 5R$
        resto = resto - (n5 * 5);
        int n1 = resto / 1;//contagem das notas de 1R$
        resto = resto - (n1 * 1);
        Console.WriteLine();
        Console.WriteLine("Quantidade de notas:");
        Console.WriteLine();
        Console.WriteLine("Notas de 100R$:  " +n100);
        Console.WriteLine();
        Console.WriteLine("Notas de 50R$:  " +n50);
        Console.WriteLine();
        Console.WriteLine("Notas de 20R$:  " +n20);
        Console.WriteLine();
        Console.WriteLine("Notas de 10R$:  " +n10);
        Console.WriteLine();
        Console.WriteLine("Notas de 5R$:  " +n5);
        Console.WriteLine();
        Console.WriteLine("Notas de 1R$:  " +n1);
        Console.ReadKey();
        Console.Clear();
        }
    }
}
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.