Durante esta actividad, los alumnos serán capaces de:
Esta actividad se debe realizar y entregar por equipos.
NOTA: Los archivos necesarios para comenzar esta práctica están disponibles en el repositorio de GitHub del curso.
IntList
Para resolver esta práctica deberás utilizar la clase IntList
(lista de enteros), la cual está inspirada en las listas soportadas por el lenguaje Lisp y sus dialectos. Su interfaz e implementación están provistas en su totalidad en los archivos intlist.h
e intlist.cpp
. Las funciones disponibles para manipular objetos de tipo IntList
se describen a continuación. Puedes suponer que todas estas funciones tienen una complejidad constante de ejecución, es decir \(O(1)\):
Función | Descripción |
---|---|
|
Devuelve el primer elemento de la lista
|
|
Devuelve una lista con los mismos elementos que la lista
|
|
Devuelve una lista con los mismos elementos que la lista
|
|
Devuelve
|
NOTA: Además de las funciones mencionadas en la tabla anterior, la clase IntList
implementa las siguientes operaciones con la semántica esperada: constructor por omisión, constructor de copiado, constructor con lista de inicialización, destructor, operador de asignación (=
), operador de igualdad (==
) y función miembro to_string
. Así mismo, el operador de corrimiento a la izquierda (<<
) está sobrecargado para poder imprimir objetos de tipo IntList
en flujos de salida como std::cout
.
Implementa en C++ las funciones que se describen a continuación utilizando recursión en todas y cada una de ellas. El código debe colocarse en el archivo recursion.cpp
.
IMPORTANTE: Antes de la definición de cada función debes incluir un comentario que indique su correspondiente complejidad de tiempo de ejecución.
Función | Descripción |
---|---|
|
Devuelve el tamaño (número de elementos) contenidos en la lista
|
|
Devuelve una lista con los mismos elementos que la lista
|
|
Devuelve la suma de todos los elementos contenidos en la lista
|
|
Devuelve una lista con los mismos elementos que la lista
|
|
Devuelve el último elemento de la lista
|
|
Devuelve una lista con los mismos elementos que la lista
|
|
Devuelve el elemento más grande contenido en la lista
|
|
Devuelve una lista que es el resultado de concatenar la lista
|
|
Devuelve una lista en la que
|
|
Devuelve una lista con los mismos elementos que la lista
|
|
Esta función debe implementar el algoritmo de mezcla (merge). Devuelve una lista que es el resultado de intercalar, en orden ascendente, los elementos de las listas
|
|
Devuelve
|
|
Devuelve una lista con los mismos elementos que la lista
|
|
Devuelve una lista con los mismos elementos que la lista
|
|
Devuelve una lista con unos y ceros que representa el valor en binario (sistema de numeración base 2) del número entero
|
Prueba tu código utilizando las pruebas unitarias contenidas en el archivo tests.cpp
(contiene 66 aserciones en total).
Coloca en un comentario en la parte superior del archivo fuente recursion.cpp
la información personal de los autores (matrícula y nombre), por ejemplo:
/*---------------------------------------------------------- * Práctica #6: Recursión * Implementación de funciones recursivas. * * Fecha: 03-Nov-2021 * Autores: * A01770771 Sylvie Laufeydottir * A01777771 Loki Laufeyson *----------------------------------------------------------*/
To deliver the recursion.cpp
file, please provide the following information:
Solo es necesario que lo entregue un miembro del equipo.
La fecha límite es el viernes 12 de noviembre.