[ Foro de Pascal ]

Estructuras base de datos

08-Jan-2015 10:17
Alberto Rilo Mosteiro
2 Respuestas

En este tengo un problema ya estructurando en la parte type ya que es bastante lioso. A ver si me podeis ayudar.

(*Diseñe y codifique las estructuras de datos necesarias para gestionar la organización
de un festival de música, teniendo en cuenta que se precisa conocer el nombre, dni y
edad de los asistentes, así como la lista de entradas para los conciertos que cada uno de
ellos ha adquirido; para cada entrada se almacenará el código de entrada, la zona (pista,
grada o vip), el nombre del artista y la fecha y hora del concierto. Únicamente para
entradas de grada o vip, se almacenará también el número de asiento (para las entradas
de pista NO debe aparecer este campo). Tenga en cuenta que cada persona solamente
puede adquirir una entrada por concierto, que el aforo máximo del recito del festival es
de 5.000 personas y que el evento dura 5 días, con 4 conciertos distintos previstos cada
día.


PROGRAM Basico(input,output);
    CONST
      maximofestival=5000;
      maximoentradas=4;
      n=3;
 type
 tfestival=array[1..4,1..5] of tpersona;
 tfecha=record
        dia:1..5;
        hora:0..24;
        end;
        
 tnombre= string(30);
 tdni=string(9);
 tedad=18..80;
 tcodigo=string(20);
 tartista=tnombre;
 tzona=(pista,grada,vip);
 
 tpersona=record
          nombre:tnombre;
          dni:tdni;
          edad:tedad;
          entradas:tentradas;
          end;
          
  datosvip=record
          numeroasiento:integer;
          nombre:tnombre;
          end;
               
  tlistavip=array[1..n] of datosvip; 

 datosvip=record
          numeroasiento:integer;
          nombre:tnombre;
          end;
                  
  tentradas=record
            pista='';
            codigo:tcodigo;
            artista:tartista;
            case zona: tzona of 
            
                 grada:(numeroasiento:integer);
                 vip: tlistavip;
               end;
          
 begin
 end.
    




09-Jan-2015 13:40
Nacho Cabanes (+83)

Si eres meticuloso y dejas fragmentos del enunciado como comentarios dentro del fuente, te será fácil comprobar qué está bien y qué no lo está:


PROGRAM Basico(input,output);
    CONST
      maximofestival=5000;
      maximoentradas=4;
      n=3;
 type
 tfestival=array[1..4,1..5] of tpersona;
 tfecha=record
        dia:1..5;
        hora:0..24;
        end;
        
 tnombre= string(30);
 tdni=string(9);
 tedad=18..80;
 tcodigo=string(20);
 tartista=tnombre;
 tzona=(pista,grada,vip);
 
(* nombre, dni y edad de los asistentes, y lista de entradas *)

 tpersona=record
          nombre:tnombre;
          dni:tdni;
          edad:tedad;
          entradas:tentradas;
          end;
          
  datosvip=record
          numeroasiento:integer;
          nombre:tnombre;
          end;
               
  tlistavip=array[1..n] of datosvip; 

                  
(* para cada entrada: código de entrada, la zona (pista,
grada o vip), el nombre del artista y la fecha y hora del concierto *)

  tentradas=record
            pista='';
            codigo:tcodigo;
            artista:tartista;
            case zona: tzona of 
            
                 grada:(numeroasiento:integer);
                 vip: tlistavip;
               end;
          (* Falta fecha y hora *)


(* entradas de grada o vip, se almacenará también el número de asiento (para las entradas
de pista NO debe aparecer este campo *)

 datosvip=record
          numeroasiento:integer;
          nombre:tnombre;
          end;
        (* Sobra el nombre; falta el resto de detalles *)


(* aforo máximo del recito del festival es
de 5.000 personas y que el evento dura 5 días, con 4 conciertos distintos previstos cada
día *)

    (* No reflejado aún en los tipos de datos, sólo como constantes: falta el 5000 en "tfestival" *)

(* Cada persona solamente puede adquirir una entrada por concierto *)

    (* No será parte de los tipos de datos, sino de la lógica de control *)

 begin
 end.
    



09-Jan-2015 18:36
Luis Torres (+18)

He notado que te piden almacenar, para cada asistente, los conciertos para los que ha adquirido una entrada, pero con el campo "entrada" de "tpersona" solo podrías guardar la entrada para un único concierto.

Saludos.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)