Código C++ – Torres de Hanoi

// Modificado por Beastieux
// Torres de Hanoi
#include <iostream>
using namespace std;

// Función recursiva que resuelve el problema de las Torres de Hanoi
void hanoi(int num, char origen, char destino, char auxiliar) {
    if (num == 1) {
        cout << "Mueva el bloque " << num << " desde " << origen << " hasta " << destino << endl;
    } else {
        hanoi(num - 1, origen, auxiliar, destino);
        cout << "Mueva el bloque " << num << " desde " << origen << " hasta " << destino << endl;
        hanoi(num - 1, auxiliar, destino, origen);
    }
}

int main() {
    int n;
    char A, B, C;

    cout << "Las clavijas son A B C\n";
    cout << "Número de discos: ";
    cin >> n;

    // Llamada a la función para resolver las Torres de Hanoi
    hanoi(n, 'A', 'C', 'B');

    return 0;
}

Este programa solicita al usuario el número de discos y luego utiliza la función hanoi para mostrar los pasos necesarios para mover los discos desde la clavija «A» hasta la clavija «C», utilizando la clavija «B» como auxiliar. La función hanoi es recursiva y se encarga de dividir el problema en subproblemas más pequeños y luego combinar las soluciones de manera adecuada para mover todos los discos.

A continuación, se proporciona una descripción detallada de cada parte del código:

  • El encabezado #include <iostream> incluye la biblioteca estándar de entrada y salida en C++.
  • La línea using namespace std; permite usar los identificadores estándar de C++ sin tener que escribir std:: antes de cada uno.
  • La función hanoi es la función principal que resuelve el problema de las Torres de Hanoi. Toma cuatro argumentos: el número de discos num, y los nombres de las tres clavijas: origen, destino y auxiliar. Esta función utiliza la recursión para mover los discos de una clavija a otra.
    • Si num es igual a 1, simplemente imprime el movimiento del disco desde la clavija origen a la clavija destino.
    • Si num es mayor que 1, la función realiza los siguientes pasos:
      1. Llama recursivamente a hanoi para mover num-1 discos de la clavija origen a la clavija auxiliar, utilizando destino como clavija auxiliar.
      2. Imprime el movimiento del disco num desde origen a destino.
      3. Llama recursivamente a hanoi nuevamente para mover los num-1 discos desde la clavija auxiliar a la clavija destino, utilizando origen como clavija auxiliar.
  • La función main es la función de entrada del programa.
    • Se declaran variables n, A, B y C.
    • Se pide al usuario que ingrese el número de discos.
    • Se llama a la función hanoi con los parámetros n, 'A', 'C' y 'B' para resolver el problema de las Torres de Hanoi.

Pueder ir al artículo principal:

Códigos Sencillos hechos en C++

18 thoughts on “Código C++ – Torres de Hanoi

  1. tomé el código y lo he modificado para C, quizá les sirva.
    //Modificado por Sainos
    //Torres de Hanoi
    #include

    void hanoi(int num,char A,char C,char B)
    {
    if(num==1)
    {
    printf(«Mueva el bloque %d desde %c hasta %c\n»,num,A,C);

    }
    else
    {
    hanoi(num-1,A,B,C); //Recursividad.
    printf(«Mueva el bloque %d desde %c hasta %c\n»,num,A,C);
    hanoi(num-1,B,C,A);
    }
    }

    int main()
    {
    int n;
    char A,B,C;

    printf(«Los clavijas son A B C\n»);
    printf(«Numero de discos: «);
    scanf(«%d»,&n); //Se cacha el valor de los discos.
    hanoi(n,’A’,’C’,’B’); //Las letras representan las torres.
    return 0;

    }

    1. #include
      #include

      void hanoi(int num,char A,char C,char B)
      {
      if(num==1)
      {
      printf(«Mueva el bloque %d desde %c hasta %c\n»,&num,A,C);
      }
      else
      {
      hanoi(num-1,A,B,C); //Recursividad.
      printf(«Mueva el bloque %d desde %c hasta %c\n»,&num,A,C);
      hanoi(num-1,B,C,A);
      }
      }
      int main()
      {
      int n;
      char A,B,C;

      printf(«Los clavijas son A B C\n»);
      printf(«Numero de discos: «);
      scanf(«%d»,&n);
      hanoi(n,’A’,’C’,’B’);
      return 0;
      }
      ten creo que esto te servirá

Deja un comentario