// Programación en C++ para Ingenieros, Ed. Thomson Paraninfo, 2006 // Capítulo 8: Diseño descendente // Ejemplo: El museo // fichero: ElMuseo.cpp //Número máximo de piezas const int PIEZAS = 2000; //Número máximo de pabellones const int PABELLONES = 10; //Número máximo de autores const int AUTORES = 1000; //Número máximo para la tabla de caracteres, //30 posiciones según el enunciado del problema //y una más para el centinela. //Total 31 const int L = 31; //Tipo enumerado para los distintos temas de //los cuales el museo expone piezas. enum tTema {barroco, renacentista, medieval}; //Tabla para guardar el nombre. typedef char tCadena[L]; //Tupla para la fecha de nacimiento y defunción //del autor struct tFecha{ int dia,mes,anyo; }; //Tupla para las medidas de las piezas. struct tMedidas{ float alto, ancho; }; //Tupla para los datos del pabellón. struct tPabellon{ int codigo, numSalas; tCadena nombre; tTema tema; }; //Tupla para la información de la pieza. //El campo dniAutor permite relacionar a una //pieza con los datos de su autor a través del campo //dniAutor en la estructura de datos que guarda la información //de todos los autores: tListaAutores (véase más abajo). struct tPieza{ int codigo; tCadena nombre; float valor; long dniAutor; tMedidas medidas; tTema tema; bool original; }; //Tupla para la información del autor. //El campo dni permite relacionar a un //autor con todas sus piezas a través de campo dniAutor //la estructura de datos que guarda la información //de todos las piezas: tListaPiezas (véase más abajo) struct tAutor{ long dni; tCadena nombre; tCadena nacionalidad; int numPiezas; tFecha fecNacimiento; tFecha fecDefuncion; }; //Tabla para la información de todas las piezas //expuestas en el museo typedef tPieza tListaPiezas[PIEZAS]; //Tupla que almacena las piezas //expuestas en el museo //piezas contiene la lista y //numPiezas el número de //posiciones ocupadas struct tPiezas{ tListaPiezas piezas; int numPiezas; }; //Tabla para la información de todos los autores //que exponen en el museo. typedef tAutor tListaAutores[AUTORES]; //Tupla que almacena los //datos de los autores que //exponen en el museo struct tAutores{ tListaAutores autores; int numAutores; }; //Tabla para la información de todos los pabellones //del museo. Esta tabla no forma parte de una tupla //como pasa con autores o piezas porque en el enunciado //del problema se dice que hay 20 y que aunque no sea //de forma explícita se considera que todos tienen datos. typedef tPabellon tListaPabellones[PABELLONES]; //Tupla para guardar toda la información, es decir, //pabellones, piezas y autores struct tMuseo{ tListaPabellones pabellones; tPiezas piezas; tAutores autores; };