Carpeta Music_data
en tu espacio
compartido de Subversion.
Tienes una copia local aquí.
El programa my_music.c
almacena
información sobre una colección de discos tal y como se muestra en la
siguiente figura.
Las variables globales rap
,
rock
y rumba
son estructuras
de tipo Category
con el número de
discos y una lista encadenada de ellos. Cada disco es una estructura con
el número de canciones, un array de información sobre cada canción y el
puntero al siguiente disco. La información de una canción es su duración
y un puntero al título.
El programa (ver función main
)
primero imprime el número de discos para
cada categoría, luego la duración de todas las canciones de una
categoría (mediante la función Duration
), y finalmente el
título de la última cación de cada disco en cada categoría mediante la
función print_title_last_track_in_each_disk
.
Puedes ignorar las funciones estáticas del fichero. Son correctas y lo único que hacen es cargar y descargar los datos en la estructura.
Compila y ejecuta el programa
my_music.c
(recuerda compilarlo con la opción
-g
). Contiene tres errores. Debido a ellos, verás que los
mensajes que imprime por pantalla son incorrectos. Por ejemplo, la duración de los
discos de la categoría “rap” es incorrecta, y los mensajes
que muestran el título de la última pista de cada disco son
incorrectos.
Utilizando el depurador, analiza la ejecución y arréglalos
(igual es conveniente hacerte una copia del programa, para volver al fichero
original si lo necesitas).
Para ello, puedes localizar las tres variables globales y las dos funciones
Duration
y
print_title_last_track_in_each_disk
. Con el depurador vete
hasta que se imprime la duración de la colección de rap y ejecuta paso a
paso cómo se calcula. Repite el procedimiento para la primera llamada a
la función print_title_last_track_in_each_disk
.
Recuerda que las funciones estáticas del fichero son correctas y lo único que hacen es cargar y descargar los datos en la estructura.
La forma de saber si la ejecución es la correcta es porque la salida del programa debe ser (presta atención a la última línea):
--- Welcome to the Music Statistics program --- Analyzing your music collection... 2 disks in the rumba category 2 disks in the rock category 1 disks in the rap category Duration of rumba songs: 6019 Duration of rock songs: 7044 Duration of rap songs: 4639 Duration of all songs: 17702 Title of last track in rumba disks: Disk 1: vestido de flores Disk 2: nina Title of last track in rock disks: Disk 1: god save the queen Disk 2: now im here Title of last track in rap disks: Disk 1: curtains close skit --- PROGRAM IS FIXED! COMMIT YOUR CHANGES ---
Opcionalmente, sube el código al SVN y/o enséñaselo al profesor. Es conveniente que vayas apuntando los pasos para explicarle al profesor cómo has solucionado los errores y de qué manera te ha ayudado a hacerlo el depurador. El profesor además puede comprobar que has entendido el manejo del depurador con algunas preguntas.