// 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);
}
}