// File Towers.cpp

// Algorithm to solve the Hanoi towers p

//     roblems with n discs.

// By: Pablo A. Gonz¨˘lez Rivera

#include 

#include 

#include 

#include 

void Hanoi(char varinicial, char varfinal, char varcentral, int n); //This function solves the problem and display it on the screen.

void HanoiES(char start, char final, char central, int discs); //Does the same than the last one, but it puts the result in the hanoi.txt Text file.

ofstream salida("hanoi.txt", ios::out); //Open the file for output.

main()

    {

    int ndiscs; //Number of discs.

    cout << "This Program solves the Hanoi Towers with n discs\n\n By: Pablo A. Gonzalez Rivera\n\nThe result also is put in the hanoi.txt file.\n\n";

    cout << "How many discs? ";

    cin >> ndiscs;

    Hanoi('A', 'C', 'B', ndiscs);

      salida << "Answer of the Hanoi Towers.\n\nGenerated by: towers.exe\n\nCreated by: Pablo A. Gonzalez Rivera\n\nNumber of discs: " << ndiscs << "\n\n" << endl;

      HanoiES('A', 'C', 'B', ndiscs);

    system("PAUSE");

    return 0;

}

void Hanoi(char varinicial, char varfinal, char varcentral, int n)

    {

    if (n == 1)

    cout << "Move disc 1 from peg" << varinicial << " to peg " << varfinal << endl;

    else

        {

        Hanoi(varinicial, varcentral, varfinal, n - 1);

        cout << "Move disc " << n << " from peg " << varinicial << " to peg " << varfinal << endl;

        Hanoi(varcentral, varfinal, varinicial, n - 1);

    }

    return;

}

void HanoiES(char start, char final, char central, int discos)

    {

    if (discos == 1)

    salida << "Move disc 1 from peg " << inicial << " to peg " << final << endl;

    else

        {

        

        HanoiES(start, central, final, discos - 1);

        salida << "Mover disco " << discos << " de varilla " << inicial << " a varilla " << final << endl;

        HanoiES(central, final, start, discos - 1);

          

        

    }

}