Exemple #1
0
        public void iterativo(int n, Pila ini, Pila fin, Pila aux)
        {
            if (n != 0)
            {
                generarDiscos(n);
                if (n % 2 != 0)
                {
                    do
                    {
                        mover_disco(ini, fin);
                        mover_disco(ini, aux);
                        mover_disco(aux, fin);
                    }while (fin.getNumDiscos() != n);
                    Console.WriteLine("Número de movimientos totales = " + numMovimientos.ToString());
                    Console.ReadLine();
                }

                if (n % 2 == 0)
                {
                    do
                    {
                        mover_disco(ini, aux);
                        mover_disco(ini, fin);
                        mover_disco(aux, fin);
                    }while (fin.getNumDiscos() != n);
                    Console.WriteLine("Número de movimientos totales = " + numMovimientos.ToString());
                    Console.ReadLine();
                }
            }
            else
            {
                Console.WriteLine("No hay suficientes discos");
                Console.ReadLine();
            }
        }
Exemple #2
0
        /*TODO: Implementar métodos*/
        public void mover_disco(Pila a, Pila b)
        {
            Disco discoAux = new Disco();

            if (pilaFIN.getNumDiscos() != n || pilaAUX.getNumDiscos() != n)
            {
                if (comprobarMovimiento(a, b).Equals("C"))
                {
                    return;
                }
                if (comprobarMovimiento(a, b).Equals("A"))
                {
                    discoAux = a.pop();
                    b.push(discoAux);
                    numMovimientos++;
                }
                else
                {
                    discoAux = b.pop();
                    a.push(discoAux);
                    numMovimientos++;
                }
            }
        }