Una aplicación del móvil necesita almacenar las celdas que ofrecen cobertura en cada momento. El número de celdas no se sabe de antemano pues depende de la situación del dispositivo. Cada celda tiene un identificador único (entero positivo) y un nivel de la calidad de la señal (número entre 0 y 100). En todo momento, la aplicación distingue a una de las celdas como la “actual” (la que da mejor cobertura en ese instante). Cada cierto tiempo, esta información se actualiza dependiendo de la calidad de la señal.
Las siguientes dos funciones ya están implementadas en la aplicación:
... new_cell()
. Devuelve un puntero a una
nueva estructura de celda. El tipo de dato del resultado es el utilizado
para definir la estructura con la información de la celda.
void remove_cell(...)
. Función opuesta a la
anterior, recibe un puntero a una estructura de datos de una celda y se
deshace de ella. Hay que llamar a esta función para cerciorarse de que
esta estructura “desaparece”.
Tienes que escribir las siguientes porciones de código:
Definición de la estructura de datos para almacenar la información de una celda y declaración de las variables necesarias para almacenar los datos que se piden.
void fill_fields(...)
. Función que asigna
los valores de los campos pasados como parámetros a las variables de una
estructura cuyo puntero se recibe como parámetro. Decide primero qué
parámetros debe recibir la función y luego escribe el código.
void update_current(...)
. Función que
asigna como celda “actual” la que tiene mayor calidad de
señal.
¿Qué cambio harías en la definición de la estructura de datos para almacenar la información de forma “circular” (es decir, que estén ordenadas como un círculo)?
Para ello puedes seguir los pasos:
¿Cómo vas a representar el conjunto de celdas? ¿Sabes de antemano cuántas celdas tienes que manipular?
Define las estructuras de datos necesarias para almacenar el conjunto de celdas. ¿Cómo distingues a la celda actual?
¿Qué prototipo crees que tiene la función
“new_cell
”?
Define el prototipo de la función
“fill_fields
”. Escribe su código.
Implementa la función
“update_current
”.
¿Qué quiere decir exactamente una “estructura circular” y cómo se puede implementar en C?