You are on page 1of 2

ESCUELA POLITECNICA NACIONAL Facultad de ingeniera en sistemas Estructura de datos Nombre: Alexander Pinchao Tema: Torres de Hani Definicin.

Las Torres de Hani es un rompecabezas o juego matemtico inventado en 1883 por el matemtico francs douard Lucas. Este solitario se trata de un juego de ocho discos de radio creciente que se apilan insertndose en una de las tres estacas de un tablero. El objetivo del juego es crear la pila en otra de las estacas siguiendo unas ciertas reglas. El problema es muy conocido en la ciencia de la computacin y aparece en muchos libros de texto como introduccin a la teora de algoritmos. Planificacin.Descripcin.El juego, en su forma ms tradicional, consiste en tres varillas verticales. En una de las varillas se apila un nmero indeterminado de discos (elaborados de madera) que determinar la complejidad de la solucin, por regla general se consideran ocho discos. Los discos se apilan sobre una varilla en tamao decreciente. No hay dos discos iguales, y todos ellos estn apilados de mayor a menor radio en una de las varillas, quedando las otras dos varillas vacantes. El juego consiste en pasar todos los discos de la varilla ocupada (es decir la que posee la torre) a una de las otras varillas vacantes. Para realizar este objetivo, es necesario seguir tres simples reglas: Slo se puede mover un disco cada vez. Un disco de mayor tamao no puede descansar sobre uno ms pequeo que l mismo. Slo puedes desplazar el disco que se encuentre arriba en cada varilla. Existen diversas formas de realizar la solucin final, todas ellas siguiendo estrategias diversas. FUNCION HANOI Condiciones. Para tener un tiempo de procesamiento optimo con nmeros enteros el valor no debe ser mayor a 13 No acepta strings No acepta fracciones No acepta nmeros negativos Parmetros. Entrada.- Entero n Salida.- String Retorno.- NONE Escenarios.10.- si nmero mayor que 0 ir a 30 20.- mensaje el nmero es errneo 30.-si nmero no es mayor a 1 ir a 50

40.- retornar movimiento 50.- salir 60.-retornar movimiento 70.-reducir el valor de nmero una unidad 80.-ir a 30 Cdigo fuente./// Towers of Hanoi.cpp: archivo de proyecto principal. #include "stdafx.h" #include "iostream" #include "math.h" using namespace System; using namespace std; void hanoi(int num,char A,char C,char B){ if(num==1){ cout<<"Mueva el bloque "<<num<<" desde "<<A<<" hasta } else { hanoi(num-1,A,B,C); cout<<"Mueva el bloque "<<num<<" desde "<<A<<" hasta hanoi(num-1,B,C,A); } } int main(array<System::String ^> ^args){ int n,opcion; char A,B,C; do{ cout<<"1.-Resolver Torre de hanoi.\n2.-Salir.\n cin>>opcion; if(opcion==1){ cout<<"Los clavijas son A B C\n"; cout<<"Numero de discos: "; cin>>n; hanoi(n,'A','C','B'); } } while(opcion!=0); system("pause"); return 0; }

"<<C<<endl;

"<<C<<endl;

Opcion: ";

You might also like