[ Foro de Pascal ]
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.
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.
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.)