PROGRAMA DE TORRES DE HANOI
ALGUIEN ME PODRIA MANDAR EL PROGRAMA EN C++ DE LAS TORRES DE HANOI POR FAVOR...
Te envio el programa de Hanoi "no recursivo".
Si lo quieres recursivo, avisame.
// programa : Hanoi no recursivo
// borland c++ for windows - ver 4.5
// 10/4/2004
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
const int MAX = 10;
int a = 0,b = 1,c = 2 ,n = 0,
p[3],x[3][MAX];
void GetDim()
{
while(n < 1 || n > MAX)
{
cout << "entre el numero de discos (0 < n <= 10) : ";
cin >> n;
}
cout << endl << endl;
} // GET DIM
void Init()
{
if(n%2) // para numero de aros pares, rotacion inversa
{
b = 2;
c = 1;
}
for(int i = 0;i < n;i++)
x[0][i] = n-i;
p[0] = n-1;
p[1] = p[2] = -1;
} // INIT
void Show()
{
for(int i = 0;i < 3;i++)
{
cout << "[" << char('a'+i) << "] : ";
for(int j = 0;j < n;j++)
{
cout << setw(3);
if(x[i][j])
cout << x[i][j];
else
cout << '.';
}
cout << endl;
}
cout << endl;
getch();
} // SHOW
void Rotation()
{
int holder = a;
a = b;
b = c;
c = holder;
} // ROTATION
void Move(int source,int target)
{
x[target][++p[target]] = x[source][p[source]];
x[source][p[source]--] = 0;
} // MOVE
void Process()
{
Show();
for(;;)
{
Move(a,b);
Show();
if(p[b] == n-1)
break;
if(p[c] == -1)
Move(a,c);
else if(p[a] == -1)
Move(c,a);
else if(x[a][p[a]] < x[c][p[c]])
Move(a,c);
else
Move(c,a);
Show();
Rotation();
}
} // PROCESS
void main()
{
cout << "Torres de Hanoi, processo no recursivo : " << endl << endl;
GetDim();
Init();
Process();
cout << "end of program - good bye ! ! ! " << endl;
} // MAIN
Si lo quieres recursivo, avisame.
// programa : Hanoi no recursivo
// borland c++ for windows - ver 4.5
// 10/4/2004
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
const int MAX = 10;
int a = 0,b = 1,c = 2 ,n = 0,
p[3],x[3][MAX];
void GetDim()
{
while(n < 1 || n > MAX)
{
cout << "entre el numero de discos (0 < n <= 10) : ";
cin >> n;
}
cout << endl << endl;
} // GET DIM
void Init()
{
if(n%2) // para numero de aros pares, rotacion inversa
{
b = 2;
c = 1;
}
for(int i = 0;i < n;i++)
x[0][i] = n-i;
p[0] = n-1;
p[1] = p[2] = -1;
} // INIT
void Show()
{
for(int i = 0;i < 3;i++)
{
cout << "[" << char('a'+i) << "] : ";
for(int j = 0;j < n;j++)
{
cout << setw(3);
if(x[i][j])
cout << x[i][j];
else
cout << '.';
}
cout << endl;
}
cout << endl;
getch();
} // SHOW
void Rotation()
{
int holder = a;
a = b;
b = c;
c = holder;
} // ROTATION
void Move(int source,int target)
{
x[target][++p[target]] = x[source][p[source]];
x[source][p[source]--] = 0;
} // MOVE
void Process()
{
Show();
for(;;)
{
Move(a,b);
Show();
if(p[b] == n-1)
break;
if(p[c] == -1)
Move(a,c);
else if(p[a] == -1)
Move(c,a);
else if(x[a][p[a]] < x[c][p[c]])
Move(a,c);
else
Move(c,a);
Show();
Rotation();
}
} // PROCESS
void main()
{
cout << "Torres de Hanoi, processo no recursivo : " << endl << endl;
GetDim();
Init();
Process();
cout << "end of program - good bye ! ! ! " << endl;
} // MAIN
porfa necesito el programa de las torres de hanoi pero recursivo enviamelo gracias.
programa Hanoi recursivo : si te molestas en buscarlo, puedes encontrarlo en este foro.
