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.