Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Se tiene el siguiente juego para simular el problema de las Torres de Hanoi, que consiste en te
tres postes izquierdo, medio y derecho y un grupo de discos de diferente tamaño los cuales
encuentran ubicados de abajo hacia arriba de mayor a menor tamaño en uno de los tres pos
denominado poste origen; seguidamente deben moverse todos los discos a cualquiera de los ot
dos postes denominado destino y el otro queda como auxiliar; los movimientos de los disc
deben ajustarse a las siguientes reglas:
Análisis
Se plantean dos casos: (1) mover un disco desde el poste izquierdo hacia el poste derecho y
mover tres discos desde el poste izquierdo hacia el poste derecho, cuya solución gráfica es:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=19088&id_unidad=210584&id_pkg=47845&wAccion=ver_scos 1/9
23/5/2021 Sistema Virtual de Educación [Contenidos]
Diseño en seudocódigo
Inicia MoverDiscos
Si N = 1 Entonces
Caso_Contrario
Inicia MayorQue1
Prueba de escritorio
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=19088&id_unidad=210584&id_pkg=47845&wAccion=ver_scos 2/9
23/5/2021 Sistema Virtual de Educación [Contenidos]
Programa en C++
// TorresHanoi
#include <iostream>
// Prototipado:
void EscribirPoste(int);
// Definicion de funciones:
int main()
cin >> n;
cout << "0 --> Izquierdo, 1 --> Medio, 2 --> derecho (salir --> otro
valor): ";
cout << "0 --> Izquierdo, 1 --> Medio, 2 --> derecho (salir --> otro
valor): ";
cout << "Secuencia de pasos para mover " << n << " discos desde el
poste ";
EscribirPoste(origen);
EscribirPoste(destino);
return 0;
if (nm == 1)
else {
cout << "Pasar el disco " << n << " desde el poste ";
EscribirPoste(org);
EscribirPoste(dst);
void EscribirPoste(int p) {
switch (p) {
Resultados de la corrida
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=19088&id_unidad=210584&id_pkg=47845&wAccion=ver_scos 5/9
23/5/2021 Sistema Virtual de Educación [Contenidos]
Programa en C++
# TorresHanoi.py
def NomPoste(argument):
Poste = {
0: "Izquierdo",
1: "Medio",
2: "Derecho"
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=19088&id_unidad=210584&id_pkg=47845&wAccion=ver_scos 6/9
def PasarDisco(n, org, dst):
23/5/2021 Sistema Virtual de Educación [Contenidos]
if (nm == 1):
else :
# Funcion Principal:
while (1):
break
origen = int(input( "0 --> Izquierdo, 1 --> Medio, 2 --> derecho (salir --> otro
valor): "))
break
destino = int(input( "0 --> Izquierdo, 1 --> Medio, 2 --> derecho (salir --> otro
valor): "))
break
print( "Secuencia de pasos para mover " + str( n) + " discos desde el poste " +
NomPoste(origen) + " hacia el poste " + NomPoste(destino))
print("")
Resultados de la corrida
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=19088&id_unidad=210584&id_pkg=47845&wAccion=ver_scos
7/9
23/5/2021 Sistema Virtual de Educación [Contenidos]
0 --> Izquierdo, 1 --> Medio, 2 --> derecho (salir --> otro valor): 0
0 --> Izquierdo, 1 --> Medio, 2 --> derecho (salir --> otro valor): 2
Secuencia de pasos para mover 3 discos desde el poste Izquierdo hacia el poste Derecho
0 --> Izquierdo, 1 --> Medio, 2 --> Derecho (salir --> otro valor): 2
Secuencia de pasos para mover 4 discos desde el poste Derecho hacia el poste Medio
>>>
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=19088&id_unidad=210584&id_pkg=47845&wAccion=ver_scos 9/9