viernes, diciembre 25, 2009

Resolución de la Evaluación de Laboratorio II y Programación II de Diciembre

En el enunciado se destacaban las condiciones a cumplir, dando los casos base para la formación de una lista simplemente encadenada que representa un nivel de la triángulo de Tartaglia (o Pascal, o Binomio de Newton) para obtener algo como lo representado en la figura siguiente:



Para poder resolver el problema, primero definí la estructura que iba a soportar los datos en la lista:
Luego separé el problema en cuatro partes (se puede mejorar...):
- agregarNodo() será la función encargada de ir sumando un nodo por cada nivel, desde el primer hasta el nivel ingresado por el usuario.
- borrarLista() se encargará de eliminar la lista completa, para cuando queramos ver un triángulo de otro nivel.
- muestraLista() nos permitirá ver en pantalla toda la lista.
- calculaNivel() es la función que realizará las sumas sobre cada nodo.

En el programa principal, armé un menú con dos opciones:
1) Crear Triángulo.
2) Salir.

La opción 1) nos va a pedir el nivel del triángulo a formar, verifica que no exista una lista anterior, y en caso contrario, la elimina, para luego en una estructura de repetición que va desde el valor ingresado por el usuario hasta 0, realizando los sucesivos llamados a agregarNodo() y muestraLista().



Básicamente la función agregarNodo() inserta un nodo delante del primero existente, donde el dato almacenado es un uno (1), de esa manera cumple con la condición que habla de que empieza la lista siempre con un uno. Luego verifica que si no es el primer nodo o el segundo, entonces llama a la función encargada de realizar las sumas necesarias:


La función calculaNivel(), es la función recursiva que solicita el enunciado, y actúa de la siguiente manera:
- para cada ejecución de la función, crea una variable auxiliar que almacenará la dirección del siguiente a la dirección del parámetro. Haciendo esto siempre y cuando esa dirección sea distinta de NULL, y luego sumando los valores almacenados en el campo de dato. Y finalmente hace el llamado recursivo, pasando ahora como parámetro de la función, la dirección almacenada en el campo sig del parámetro recibido.


En el video se puede ver un seguimiento para nivel 4:


Para completar el código nos quendan las funciones borrarLista() y muestraLista().


Espero que les pueda ser de ayuda, para entender la forma de resolver el ejercicio.
Les dejo a Uds. la adaptación a Objetos de este código.

Salu2...///

Algunas Fotitos