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.