Examen Parcialito - 75.41. Algoritmos y Programación II - 28/09/2012

Cátedra: Wachenchauzer
Fecha: Primera Oportunidad - (Segundo Cuatrimestre) 2012
Día: 28/09/2012

Esta página está incompleta; podés ayudar completando el material.

Enunciado

Resolvé los siguientes problemas en forma clara y legible, respetando sangrías e incluyendo la documentación necesaria. Si te parece que los comentarios no son suficientemente explicativos, podés agregar una descripción del funcionamiento del código. Podés escribir tantas funciones auxiliares como creas necesarias.

Punto I

Dado un TDA ListaEnlazada con las siguientes definiciones de tipos:

typedef struct nodo {
    struct nodo *siguiente;
    int valor; /* El dato del nodo es int */
} nodo_t;
 
typedef struct lista {
    nodo_t *primero;
    nodo_t *ultimo:
} lista_t;

a) Implementar una nueva primitiva “lista_map” que reciba como primer parámetro un puntero a una función f (que tome y devuelva un número entero), y como segundo parámetro un puntero a lista_t. lista_map debe reemplazar cada uno de los valores de la lista por el resultado de aplicar la función f a dichos valores.
b) Muestre un ejemplo de invocación a la primitiva lista_map con una función que eleve al cuadrado.

Punto II

Escribir una función que reciba una pila y un parámetro n con la cantidad de elementos en la pila y la “parta” en dos: la que es recibida por parámetro contendrá la primera mitad (elementos de 0 a n/2-1), y la pila devuelta por la función tendrá los elementos de n/2 a n-1, manteniendo el orden de la pila original. (Se pueden usar las estructuras auxiliares que se crean convenientes).

Punto III

Escribir una función que reciba dos números naturales, y devuelva true si los dos números son consecutivos en la sucesión de Fibonacci, o false en el caso de que no lo sean. La sucesión de Fibonacci está definida como: F(0) = 0, F(1) = 1 y F(n) = F(n-1) + F(n-2). ¿De qué orden es la solución propuesta? ¿Se puede encontrar una solución más eficiente? ¿Cómo?

Resolución

Discusión

Si ves algo que te parece incorrecto en la resolución y no te animás a cambiarlo, dejá tu comentario acá.
materias/75/41/parcialito_wachenchauzer_28092012.txt · Última modificación: 2013/08/05 13:35 por derUnbekannt
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 3.0 Unported


Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki