torres de hanoi
ayudenme a hacer este programa por que si no me van a reprobar porfavor
// program k7a13.CPP - page 127
// recursion : Hanoi Towers.
// c++ exercices book - dr. gershon kagan (first edition : 2001)
// written in Borland CPP ver 3.1
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
const char *col[] = {"column a","column b","column c"};
int counter;
unsigned int GetNum(char *x)
{
unsigned int num;
cout << endl;
cout << setw(17) << x << " = ";
cin >> num;
cout << endl;
return num;
} // GET NUM
void Move(int n,int source,int target)
{
cout << "[" << setw(2) << counter ++
<< "] move disk number " << n << " from " << col[source] << " to "
<< col[target] << endl;
} // MOVE
void Hanoi(int n,int source,int auxiliar, int target)
{
if(n == 1)
Move(n,source,target);
else
{
Hanoi(n-1,source,target,auxiliar);
Move(n,source,target);
Hanoi(n-1,auxiliar,source,target);
}
} // HANOI
void main()
{
clrscr();
cout << "recursion : Hanoi Towers."
<< endl << endl;
for(;;)
{
int n = GetNum("level");
if(n <= 0)
break;
counter = 1;
Hanoi(n,0,1,2);
}
cout << endl << "end of program - good bye ! ! !" << endl;
getch();
} // MAIN
/*
recursion : Hanoi Towers.
level = 1
[ 1] move disk number 1 from column a to column c
level = 2
[ 1] move disk number 1 from column a to column b
[ 2] move disk number 2 from column a to column c
[ 3] move disk number 1 from column b to column c
level = 3
[ 1] move disk number 1 from column a to column c
[ 2] move disk number 2 from column a to column b
[ 3] move disk number 1 from column c to column b
[ 4] move disk number 3 from column a to column c
[ 5] move disk number 1 from column b to column a
[ 6] move disk number 2 from column b to column c
[ 7] move disk number 1 from column a to column c
level = 4
[ 1] move disk number 1 from column a to column b
[ 2] move disk number 2 from column a to column c
[ 3] move disk number 1 from column b to column c
[ 4] move disk number 3 from column a to column b
[ 5] move disk number 1 from column c to column a
[ 6] move disk number 2 from column c to column b
[ 7] move disk number 1 from column a to column b
[ 8] move disk number 4 from column a to column c
[ 9] move disk number 1 from column b to column c
[10] move disk number 2 from column b to column a
[11] move disk number 1 from column c to column a
[12] move disk number 3 from column b to column c
[13] move disk number 1 from column a to column b
[14] move disk number 2 from column a to column c
[15] move disk number 1 from column b to column c
level = 0
end of program - good bye ! ! !
*/
// recursion : Hanoi Towers.
// c++ exercices book - dr. gershon kagan (first edition : 2001)
// written in Borland CPP ver 3.1
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
const char *col[] = {"column a","column b","column c"};
int counter;
unsigned int GetNum(char *x)
{
unsigned int num;
cout << endl;
cout << setw(17) << x << " = ";
cin >> num;
cout << endl;
return num;
} // GET NUM
void Move(int n,int source,int target)
{
cout << "[" << setw(2) << counter ++
<< "] move disk number " << n << " from " << col[source] << " to "
<< col[target] << endl;
} // MOVE
void Hanoi(int n,int source,int auxiliar, int target)
{
if(n == 1)
Move(n,source,target);
else
{
Hanoi(n-1,source,target,auxiliar);
Move(n,source,target);
Hanoi(n-1,auxiliar,source,target);
}
} // HANOI
void main()
{
clrscr();
cout << "recursion : Hanoi Towers."
<< endl << endl;
for(;;)
{
int n = GetNum("level");
if(n <= 0)
break;
counter = 1;
Hanoi(n,0,1,2);
}
cout << endl << "end of program - good bye ! ! !" << endl;
getch();
} // MAIN
/*
recursion : Hanoi Towers.
level = 1
[ 1] move disk number 1 from column a to column c
level = 2
[ 1] move disk number 1 from column a to column b
[ 2] move disk number 2 from column a to column c
[ 3] move disk number 1 from column b to column c
level = 3
[ 1] move disk number 1 from column a to column c
[ 2] move disk number 2 from column a to column b
[ 3] move disk number 1 from column c to column b
[ 4] move disk number 3 from column a to column c
[ 5] move disk number 1 from column b to column a
[ 6] move disk number 2 from column b to column c
[ 7] move disk number 1 from column a to column c
level = 4
[ 1] move disk number 1 from column a to column b
[ 2] move disk number 2 from column a to column c
[ 3] move disk number 1 from column b to column c
[ 4] move disk number 3 from column a to column b
[ 5] move disk number 1 from column c to column a
[ 6] move disk number 2 from column c to column b
[ 7] move disk number 1 from column a to column b
[ 8] move disk number 4 from column a to column c
[ 9] move disk number 1 from column b to column c
[10] move disk number 2 from column b to column a
[11] move disk number 1 from column c to column a
[12] move disk number 3 from column b to column c
[13] move disk number 1 from column a to column b
[14] move disk number 2 from column a to column c
[15] move disk number 1 from column b to column c
level = 0
end of program - good bye ! ! !
*/
