Está en la página 1de 3

Prctica No. 3 de Algoritmos y Estructuras de Datos: Estudio final de Recursividad, Algoritmos Iterativos y Recursivos de Ordenamiento y funciones Hash.

Prctica No. 3 Estudio final de Recursividad, Algoritmos Iterativos y Recursivos de Ordenamiento y funciones Hash
Objetivos: El alumno al final de la prctica: -Estudiar la Recursividad en la programacin. -Terminar el estudio de los Algoritmos Iterativos y Recursivos de Ordenamiento. -Estudiar en forma introductoria una funcin Hash de comportamiento estable. -Incorporar las tcnicas de Memoria Dinmica en C en sus programas. Desarrollo: 1.-Elaborar un programa en C que efecte lo siguiente: Le pida al usuario la cantidad de n nmeros de punto flotante a generar en forma aleatoria. Guardar estos n nmeros en un arreglo o array creado con memoria dinmica. Buscar mediante tres procedimientos recursivos el nmero ms grande, el nmero mas chico y el promedio de los nmeros del array en cuestin. Se le permita al usuario volver a correr el programa con otra cantidad n de datos aleatorios, o no. Esto involucra que si se vuelve a correr el programa liberar la memoria usada por el array de n celdas y volver a crear otro array en forma dinmica. Pueden basarse en el archivo fuente recursividad_maxnumarray_01.c que ya previamente se les envo por e-mail. Debern de modificarlo para incluir el caso trivial, pero si debe estar incluido el caso en que se est trabajando con un array de un solo elemento y detener a una sola la llamada recursiva (como la expliqu al presentarles el cdigo en C). La sugerencia para que trabajen el caso trivial que rompa las llamadas recursivas es que al estar efectuando las llamadas recursivas estas trabajen con un array de un elemento menos as hasta encontrarse con un array de uno o dos elementos (as tendran mas posibilidades de diseo de esta parte de su funcin recursiva) y as ya detener y desenredar todos los procedimientos recursivos llamados. un programa en C que efecte lo siguiente: Le pida al usuario la cantidad n de nmeros de punto flotante a generar en forma aleatoria. Guardar estos n nmeros en un arreglo o array creado con memoria dinmica. Se le pedir al usuario el tipo de incrementos a usar: Knuth Fibonacci. A continuacin se ordenarn estos nmeros mediante el algoritmo Shell, pero esta vez el usuario podr indicar la regin en donde se ordenarn los datos del array; es decir que se est generalizando el problema de ordenamiento de datos entre celdas con ndices low y high. Pero adems se le proporcionar a la funcin el tipo de incrementos; sea 0 para incrementos Knuth y 1 para incrementos Fibonacci. La interface de la nueva versin de la funcin ordenamiento_shell sera: Antes de llamar a la funcin ordenamiento_shell( ) se calcular la cantidad m y los valores adecuados de los dos tipos de incrementos en funcin de la cantidad n de datos a ordenar. Se usar tambin memoria dinmica para almacenar dicho par de arreglos de m incrementos. A continuacin se le pedir al usuario que pueda volver a generar o no otro conjunto de n datos aleatorios y ordenarlos con otro o el mismo tipo de incrementos.

2.-Elaborar

void ordenamiento_shell (double *elemento, int low, int high, int tipo_inc)

3.-Elaborar un programa en C que efecte lo siguiente: Le pida al usuario la cantidad n de nmeros de punto flotante a generar en forma aleatoria. Guardar estos nmeros n en un arreglo o array creado con memoria dinmica. A continuacin se ordenarn estos n nmeros mediante el algoritmo Mergesort. A continuacin se le pedir al usuario que pueda volver a generar o no otro conjunto de n datos aleatorios y volverlos a ordenar. IMPORTANTE: No olvidar el otro arreglo auxiliar que se requiere para el ordenamiento de los n valores con el algoritmo de Mergesort. 4.-Elaborar un programa en C que efecte lo siguiente: Repetir el punto 3, pero ahora usando el ordenamiento con el algoritmo Quicksort.
Universidad Autnoma Metropolitana Unidad Iztapalapa Elaborado por profesor Miguel Angel Gutirrez Galindo. NOVIEMBRE-2012
-1-

Prctica No. 3 de Algoritmos y Estructuras de Datos: Estudio final de Recursividad, Algoritmos Iterativos y Recursivos de Ordenamiento y funciones Hash.

5.-Experimentar y probar la funcin Hash que proporcion el profesor en clase (este se basa en el criterio de Mc Person para dispersar, este viene implementado en el archivo hash_01.c que ya se les envi por e-mail). Esta funcin Hash trabaja con cadenas de texto que debern ser tecleadas sin espacios; es decir como cadena_de_texto_de_prueba. Trabajarn este programa con cada una de las lneas del siguiente poema de Sor Juana Ins de la Cruz (la Dcima Musa) llamado Teme que su Afecto Parezca...: Seora, si la belleza Que en vos llego a contemplar Es bastante a conquistar La ms inculta dureza, Por qu hacis que el sacrificio Que debo a vuestra luz pura Debindose a la hermosura Se atribuya al beneficio? Cuando es bien que glorias cante, De ser vos, quien me ha rendido, Queris que lo agradecido Se equivoque con lo amante? Vuestro favor me condena A otra especie de desdicha, Pues me quitis con la dicha El mrito de la pena. Si no es que dais a entender Que favor tan singular, Aunque se puede lograr, No se puede merecer. Con razn, pues la hermosura Aun llegada a poseerse, Si llega a merecerse, Dejara de ser ventura. Que estar un digno cuidado Con razn correspondido, Es premio de lo servido, Y no dicha de lo amado. Que dicha se ha de llamar Slo la que, a mi entender, Ni se puede merecer, Ni se pretende alcanzar. Ya que este favor excede Tanto a todos, al lograrse, Que no slo no pagarse, Mas ni agradecer se puede. Pues desde el dichoso da Que vuestra belleza vi, Tal del todo me rend, Que no me qued accin ma. Con lo cual, seora, muestro, y a decir mi amor se atreve, Que nadie pagaros debe, Que vos honris lo que es vuestro.
Universidad Autnoma Metropolitana Unidad Iztapalapa Elaborado por profesor Miguel Angel Gutirrez Galindo. NOVIEMBRE-2012
-2-

Prctica No. 3 de Algoritmos y Estructuras de Datos: Estudio final de Recursividad, Algoritmos Iterativos y Recursivos de Ordenamiento y funciones Hash.

Bien se que es atrevimiento Pero el amor es testigo Que no se lo que me digo Por saber lo que me siento. Y en fin, perdonad por Dios, Seora, que os hable as, Que si yo estuviera en m No estuvierais en m vos. Slo quiero suplicaros Que de m recibis hoy, No slo el alma que os doy, Mas la que quisiera daros. Debern establecer las caractersticas del array de punteros del tipo char apropiado para almacenar el poema en memoria; esto es, que propongan el tamao adecuado de este array, as como el porcentaje de ocupacin de este array al guardar el poema, si hubiera colisiones (en que ndices y con que frases) as como sus propuestas para resolver tales colisiones. Al final no olviden documentar sus archivos de cdigo fuente C mediante la cantidad mnima de comentarios pertinentes. Cuidar que adems su cdigo en C lo sangren adecuadamente para hacerlo ms legible y facilite su depuracin o revisin posterior. El reporte es por equipo y seguir las indicaciones sugeridas en la hoja respectiva, no olvidar en el mismo incluir la impresin del cdigo en C empleado para cumplir con los objetivos de la prctica.

Saludos......Profesor Miguel Angel Gutirrez Galindo.

Universidad Autnoma Metropolitana Unidad Iztapalapa Elaborado por profesor Miguel Angel Gutirrez Galindo. NOVIEMBRE-2012

-3-

También podría gustarte