Download Cuestión 701
Document related concepts
no text concepts found
Transcript
Cuestión 701 Se desea diseñar un programa para hacer una lista con todas las películas en DVD de un videoclub. Para almacenar toda la información de las películas (título, género, año y duración), se ha pensado en utilizar un vector de estructuras, en el que cada elemento tiene la información de una película. El número de películas del videoclub puede cambiar, pero nunca será mayor de 1000, por lo que se utilizará un vector de dimensión 1000. Se definen los siguientes tipos de datos para realizar este programa: struct dvd { char titulo[100]; char genero[100]; int anio; struct tiempo duracion; }; struct tiempo { int hor; int min; int seg; }; El número de DVDs del videoclub se almacena en la variable entera numdvd. Ejemplo de lista ordenada (las más modernas al inicio): Braveheart, Drama histórico, 1995, 2h37’00’’ Forest Gump, Drama, 1994, 2h2’00’’ La lista de Schindler, Drama histórico , 1993, 2h55’00’’ 6 Diseñar una función que dada la información de una película la almacene en la lista de forma ordenada (las más modernas al inicio) según el año. La función recibe la dirección de inicio del vector de estructuras, el número de DVDs del videoclub y el título, género, año y duración de la película (en horas, minutos y segundos). Debe devolver el nuevo número de DVDs del videoclub. Si el videoclub ya tenía 1000 películas, la función debe devolver -1 para indicar que no se ha podido almacenar. La lista original se supone que está ordenada. Prototipo int nuevodvdorden(struct dvd* lista, int numdvd, char* titulo, char* genero, int anio, int hor, int min, int seg); Programa de ejemplo #include <stdio.h> #include <stdlib.h> #include <string.h> struct tiempo { int hor; int min; int seg; }; struct dvd { char titulo[100]; char genero[100]; int anio; struct tiempo duracion; }; int nuevodvdorden(struct dvd* lista, int numdvd, char* titulo, char* genero, int anio, int hor, int min, int seg); void main(void) { struct dvd lista[1000]; int numdvd = 0; char tit[100]; char gen[100]; int anio; int hor; int min; int seg; int continua; int i; printf("Nuevo dvd? 1 SI, 0 NO\n"); scanf("%d",&continua); while(continua) { printf("Introduzca titulo: "); scanf("%s",tit); printf("Introduzca genero: "); scanf("%s",gen); printf("Introduzca anio: "); scanf("%d",&anio); printf("Introduzca horas: "); scanf("%d",&hor); printf("Introduzca min: "); scanf("%d",&min); printf("Introduzca seg: "); scanf("%d",&seg); numdvd = nuevodvdorden(lista,numdvd,tit,gen,anio,hor,min,seg); printf("¿Nuevo dvd? 1 SI, 0 NO\n"); scanf("%d",&continua); } printf("Lista de DVDs del videoclub:\n"); for(i=0;i<numdvd;i++) { printf("%-20s %-20s %-5d %dh%d'%d''\n",lista[i].titulo,lista[i].genero,lista[i].anio,lista[i].d uracion.hor,lista[i].duracion.min,lista[i].duracion.seg); } getch(); } int nuevodvdorden(struct dvd* lista, int numdvd, char* titulo, char* genero, int anio, int hor, int min, int seg) { } Nota: Al usar scanf con el argumento %s para leer el título y el género, sólo se podran leer títulos y género que no contengan espacios.