Sei sulla pagina 1di 3

Control 1 FO, cuatrimestre 1A, Grupo 20 (26/Octubre/2011)

Instrucciones: La duracin del examen es de 50 minutos. Se desea implementar un programa en C que pida al usuario toda la informacin de un CD (nombre del lbum, nmero de canciones y el ttulo y la duracin de cada cancin) y muestre por pantalla la siguiente informacin: (1) la duracin total del CD y (2) el ttulo y la duracin de la cancin ms corta del CD. Para ello os proporcionamos el tipo de dato tcompact_disc que permite almacenar la informacin de un CD:
#define MAXCAR 80 #define MAXTRACKS 20 typedef struct { char titulo[MAXCAR]; /* ttulo de la cancin */ int min; /* minutos que dura la cancin */ int seg; /* segundos que dura la cancin */ } tcancion; /* almacena la informacin de una cancin */ typedef struct { char album[MAXCAR]; /* nombre del album */ int ntracks; /* nmero de canciones en el lbum */ tcancion tracks[MAXTRACKS]; /* lista de canciones del lbum */ } tcompact_disc; /* almacena la informacin de un CD */

Ejercicio 1: Escribir el cdigo necesario para declarar la variable cd que permite almacenar la informacin completa de un CD. Ejercicio 2: Escribir el cdigo necesario para leer del teclado la informacin completa de un CD y almacenarla en la variable cd. Podis suponer que el usuario introduce correctamente toda la informacin que se le pide. El formato de entrada de los datos es el siguiente (en negrita se muestra lo que introduce el usuario. El resto son los mensajes que escribe el programa):
Album: Els millors professors europeus-Manel Nmero de canciones: 12 Lista de canciones (titulo: min:seg): En la que el Bernat se't troba: 4:19 Avs per navegants: 2:46 Ai, Dolors: 3:19 Pla quinquenal: 2:58 Roma: 3:45 Captatio benevolentiae: 4:19 Nit freda per ser abril: 4:21 Al mar: 3:28 Els guapos sn els raros: 3:38 Dona estrangera: 3:59 Cermiques Guzman: 3:23 Conrrandes de la parella estable: 7:15

Ejercicio 3: Suponiendo que ya tenemos la variable cd inicializada con la informacin de un CD, escribir el cdigo necesario para mostrar por pantalla la duracin total del CD y el ttulo y la duracin de la cancin mas corta. Por ejemplo, con la entrada de datos del ejercicio anterior, el programa mostrar la siguiente salida: Duracin total del CD: 47:30 La cancin mas corta es Avs per navegants y dura 2:46. Ejercicio 4: Usando el tipo de dato tcompact_disc, definir un nuevo tipo de dato que permita almacenar la informacin de toda la discografa que tenemos en casa. Suponer que como mximo tenemos 1000 CDs. Nota: No se puede utilizar el formato %s para leer o mostrar una cadena de caracteres.

SOLUCIN:

#include <stdio.h> #define MAXCAR 80 #define MAXTRACKS 20 #define MAXCDS 1000 typedef struct { char titulo[MAXCAR]; int min; int seg; } tcancion; typedef struct { char album[MAXCAR]; int ntracks; tcancion tracks[MAXTRACKS]; } tcompact_disc; /* Ejercicio 4: Definir un tipo de dato que permita almacenar la informacin de toda la discografa que tenemos en casa. Suponemos que como mximo tenemos 1000 CDs */ typedef struct { int num_cds; tcompact_disc } tdiscografia;

vector_cds[MAXCDS];

main() { tcompact_disc cd; /* ejercicio 1: declarar cd */ int i,j, total; tcancion corta; /* Ejercicio 2: Leer de teclado toda la informacin de un cd */ printf("Album: "); i=0; scanf("%c", &cd.album[i]); while (cd.album[i]!='\n') { i++; scanf("%c", &cd.album[i]); } printf ("Numero de canciones: "); scanf("%d%*c", &cd.ntracks); printf("Lista de canciones (titulo, min:seg):\n "); for (i=0; i<cd.ntracks; i++) { j=0; scanf("%c", &cd.tracks[i].titulo[j]); while (cd.tracks[i].titulo[j]!=':') { j++; scanf("%c", &cd.tracks[i].titulo[j]); } cd.tracks[i].titulo[j]=\n; scanf("%d:%d%*c", &cd.tracks[i].min, &cd.tracks[i].seg); }

/* Ejercicio 3: Calcular la duracin total del cd en minutos y segundos */ total=0; for (i=0;i<cd.ntracks; i++) { total=total+cd.tracks[i].min*60+cd.tracks[i].seg; } printf("Duracin total del CD: %d:%d\n", total/60, total%60); /* Mostrar por pantalla el ttulo y la duracin de la cancin ms corta del CD */ corta=cd.tracks[0]; for (i=1;i<cd.ntracks; i++) { if (cd.tracks[i].min*60+cd.tracks[i].seg < corta.min*60+corta.seg) corta=cd.tracks[i]; } printf("La cancin ms corta es: "); for (i=0; corta.titulo[i]!='\n'; i++) printf("%c", corta.titulo[i]); printf(" y dura %d:%d\n", corta.min, corta.seg); }

Potrebbero piacerti anche