// Modificado por Beastieux
// Torres de Hanoi
#include <iostream>
using namespace std;
// Función recursiva que resuelve el problema de las Torres de Hanoi
void hanoi(int num, char origen, char destino, char auxiliar) {
if (num == 1) {
cout << "Mueva el bloque " << num << " desde " << origen << " hasta " << destino << endl;
} else {
hanoi(num - 1, origen, auxiliar, destino);
cout << "Mueva el bloque " << num << " desde " << origen << " hasta " << destino << endl;
hanoi(num - 1, auxiliar, destino, origen);
}
}
int main() {
int n;
char A, B, C;
cout << "Las clavijas son A B C\n";
cout << "Número de discos: ";
cin >> n;
// Llamada a la función para resolver las Torres de Hanoi
hanoi(n, 'A', 'C', 'B');
return 0;
}
Este programa solicita al usuario el número de discos y luego utiliza la función hanoi
para mostrar los pasos necesarios para mover los discos desde la clavija «A» hasta la clavija «C», utilizando la clavija «B» como auxiliar. La función hanoi
es recursiva y se encarga de dividir el problema en subproblemas más pequeños y luego combinar las soluciones de manera adecuada para mover todos los discos.
A continuación, se proporciona una descripción detallada de cada parte del código:
- El encabezado
#include <iostream>
incluye la biblioteca estándar de entrada y salida en C++. - La línea
using namespace std;
permite usar los identificadores estándar de C++ sin tener que escribirstd::
antes de cada uno. - La función
hanoi
es la función principal que resuelve el problema de las Torres de Hanoi. Toma cuatro argumentos: el número de discosnum
, y los nombres de las tres clavijas:origen
,destino
yauxiliar
. Esta función utiliza la recursión para mover los discos de una clavija a otra.- Si
num
es igual a 1, simplemente imprime el movimiento del disco desde la clavijaorigen
a la clavijadestino
. - Si
num
es mayor que 1, la función realiza los siguientes pasos:- Llama recursivamente a
hanoi
para movernum-1
discos de la clavijaorigen
a la clavijaauxiliar
, utilizandodestino
como clavija auxiliar. - Imprime el movimiento del disco
num
desdeorigen
adestino
. - Llama recursivamente a
hanoi
nuevamente para mover losnum-1
discos desde la clavijaauxiliar
a la clavijadestino
, utilizandoorigen
como clavija auxiliar.
- Llama recursivamente a
- Si
- La función
main
es la función de entrada del programa.- Se declaran variables
n
,A
,B
yC
. - Se pide al usuario que ingrese el número de discos.
- Se llama a la función
hanoi
con los parámetrosn
,'A'
,'C'
y'B'
para resolver el problema de las Torres de Hanoi.
- Se declaran variables
Pueder ir al artículo principal:
Códigos Sencillos hechos en C++
que significa esta parte; hanoi(num-1,B,C,A);
y para enumerar los pasos?
no tienes torre de hanoi pero sin recursividad
20 1 C:\Users\steve\Documents\SinNombre.cpp [Error] expected unqualified-id before ‘{‘ token
como lo puedo resulver
tomé el código y lo he modificado para C, quizá les sirva.
//Modificado por Sainos
//Torres de Hanoi
#include
void hanoi(int num,char A,char C,char B)
{
if(num==1)
{
printf(«Mueva el bloque %d desde %c hasta %c\n»,num,A,C);
}
else
{
hanoi(num-1,A,B,C); //Recursividad.
printf(«Mueva el bloque %d desde %c hasta %c\n»,num,A,C);
hanoi(num-1,B,C,A);
}
}
int main()
{
int n;
char A,B,C;
printf(«Los clavijas son A B C\n»);
printf(«Numero de discos: «);
scanf(«%d»,&n); //Se cacha el valor de los discos.
hanoi(n,’A’,’C’,’B’); //Las letras representan las torres.
return 0;
}
46 errores makina
el programa esta incompleto
#include
#include
void hanoi(int num,char A,char C,char B)
{
if(num==1)
{
printf(«Mueva el bloque %d desde %c hasta %c\n»,&num,A,C);
}
else
{
hanoi(num-1,A,B,C); //Recursividad.
printf(«Mueva el bloque %d desde %c hasta %c\n»,&num,A,C);
hanoi(num-1,B,C,A);
}
}
int main()
{
int n;
char A,B,C;
printf(«Los clavijas son A B C\n»);
printf(«Numero de discos: «);
scanf(«%d»,&n);
hanoi(n,’A’,’C’,’B’);
return 0;
}
ten creo que esto te servirá
si explicaras que significan las letras seria mucho mejor
me podrias explicar como funciona el codigo… gracias
no me compila
me sale espected before cin
no te compila, porque no tiene la función principal, tienes que agregarla.
no le compila por la homosexualidad
int main(){
}
no lo compile me aparece el error
43 C:\Users\Propietario\Desktop\hanoi1.cpp `main’ must return `int’
como lo resuelvo?
cambia de void main a int main
haha marikon
Esta bueno…