/************************************************************************\ * Programa: thanoi.cpp * * Descripción: Programa que imprime los pasos para resolver el juego de * * las torres de hanoi para n discos dados por el usuario * * Autor: Pedro Corcuera * * Revisión: 1.0 2/02/2008 * \************************************************************************/ #include using namespace std; void torres_hanoi(int n, char detorre, char atorre, char auxtorre); main(void) { int n; const int NUM_MAX_DISCOS=16; cout << "Torres de Hanoi: Cuantos discos? (max. " << NUM_MAX_DISCOS << ") "; cin >> n; if (n > NUM_MAX_DISCOS) { cout << "Numero de discos muy grande\n"; return 1; } torres_hanoi(n,'A','C','B'); return 0; } /************************************************************************\ * Funcion: torres_hanoi * * Descripción: imprime los pasos para resolver el juego de las torres de * * hanoi para n discos de manera recursiva * * Argumentos: int n: numero de discos * * char detorre: caracter del pivote donde estan los discos * * char atorre: caracter del pivote destino * * char auxtorre: caracter del pivote auxiliar * * Valor devuelto: ninguno (la funcion imprime los movimientos) * * Autor: Pedro Corcuera * * Revisión: 1.0 2/02/2008 * \************************************************************************/ void torres_hanoi(int n, char detorre, char atorre, char auxtorre) { if (n > 0) { torres_hanoi(n-1,detorre,auxtorre,atorre); cout << "mover disco " << n << " de torre " << detorre << " a torre " << atorre << endl; torres_hanoi(n-1,auxtorre,atorre,detorre); } return; }