示例#1
0
文件: Hanoi.cs 项目: Docente2018/G800
        static void Main(string[] args)
        {
            //Cantidad de discos
            int  discos   = 0;
            int  intentos = 0;
            bool band     = false;

            do
            {
                try
                {
                    do
                    {
                        //Ingresar cantidad de discos
                        Console.Write("Ingrese la cantidad de discos: ");
                        discos = int.Parse(Console.ReadLine().ToString());

                        //Verificar el rango de discos valido
                        if (discos < 4 || discos > 8)
                        {
                            Console.Clear();
                            Console.WriteLine("Ingrese una cantidad de discos entre 4 y 8");
                        }
                    } while (discos < 4 || discos > 8);

                    band = true;
                }
                catch (Exception ex)
                {
                    //Aumenta cantidad de intentos errados
                    intentos++;
                    band = false;

                    Console.Clear();
                    Console.WriteLine("Valor inválido...");


                    //Si intentos igual a 3, genera error y termina ejecución
                    if (intentos == 3)
                    {
                        Console.WriteLine("Presione cualquier tecla para finalizar...");
                        Console.ReadKey();
                        Environment.Exit(0);
                    }
                }
            }while (!band);


            Console.Clear();
            Console.WriteLine("LAS TORRES DE HANOI...");
            Console.WriteLine("Cantidad de discos: " + discos);
            Console.WriteLine("");

            //Primer movimiento
            Hanoi.MueveTorre(discos, 1, 3, 2);

            //Resultado
            Console.WriteLine("\nResuelto en " + x + " movimientos...");
            Console.ReadKey();
        }
示例#2
0
        public static void MueveTorre(int discos, string torre1, string torre2, string torre3)
        {
            //Si numero de movimiento es menor a cero, mueve a torre
            if (discos < 2)
            {
                Hanoi.mover(discos, torre1, torre2);
            }
            else
            {
                //Generar iteración de recursividad para mover a torre auxiliar
                Hanoi.MueveTorre(discos - 1, torre1, torre3, torre2);
                //Cambiar disco de torres
                Hanoi.mover(discos, torre1, torre2);

                //Mover a torre auxiliar para generar pivote de torre
                Hanoi.MueveTorre(discos - 1, torre3, torre2, torre1);
            }
            return;
        }
示例#3
0
文件: Hanoi.cs 项目: Docente2018/G800
        public static void MueveTorre(int num, int desde, int hasta, int pivote)
        {
            //Si numero de movimiento es menor a cero, mueve a torre
            if (num < 2)
            {
                Hanoi.mover(num, desde, hasta);
            }
            else
            {
                //Generar iteración de recursividad para mover a torre auxiliar
                Hanoi.MueveTorre(num - 1, desde, pivote, hasta);
                //Cambiar disco de torres
                Hanoi.mover(num, desde, hasta);

                //Mover a torre auxiliar para generar pivote de torre
                Hanoi.MueveTorre(num - 1, pivote, hasta, desde);
            }

            return;
        }
示例#4
0
        static void Main(string[] args)
        {
            //Cantidad de discos
            int discos = 0;
            //cantidad de intentos
            int intentos = 3;

            while (intentos > 0)
            {
                Console.WriteLine("LAS TORRES DE HANOI...");
                Console.WriteLine("Digite el numero de discos que desea");
                try
                {
                    discos = Convert.ToInt32(Console.ReadLine());
                    //no admite numeros menores a cero
                    if (discos <= 0)
                    {
                        throw new ArgumentNullException();
                    }
                    Console.WriteLine("Cantidad de discos: " + discos);
                    //Primer movimiento, cantidad de discos y torres
                    Hanoi.MueveTorre(discos, "A", "C", "B");

                    //Resultado
                    Console.WriteLine("\nResuelto en " + movimientos + " movimientos...");
                    Console.ReadKey();
                }
                catch (Exception e)
                {
                    //controlamos que no se digiten letras ni valores menores a cero!!
                    e.Message.ToString();
                    intentos--;
                    Console.WriteLine("Error digite un numero valido, le quedan (" + intentos + ") intentos.");
                }
            }
        }