Pascal/Turbo Pascal - TP Dj's

   
Vista:

TP Dj's

Publicado por Daniel (3 intervenciones) el 22/10/2007 00:17:02
necesito hacer 2 procedimientos, y tengo problemas para realizarlo, te mando la estructura y variables, por favor lo necesito para mañan el martes tngo q entregar el Trabajo Practico. no puedo relacionar los vectores, desde ya gracias,

PROGRAM FIESTA_ELECTRONICA;
USES CRT;
CONST
LONG_STR_TEMA = 30; {DEF. GRUPO}
LONG_STR_NOMBRE = 30; {DEF. GRUPO}
CANT_TEMAS = 250;
CANT_DJS = 30;
CANT_TEMAS_DJ = 20;
CANT_TEMAS_A_TOCAR = CANT_DJS*CANT_TEMAS_DJ;
MAX_DURACION = 900; {15 MIN EXPRESADO EN SEG.}
TIEMPO_DJ = CANT_TEMAS_DJ*MAX_DURACION;
SALIR = 'S';
TYPE
t_minutos = string[5];
t_r_cant_temas = 1..CANT_TEMAS;
t_r_cant_djs = 1..CANT_DJS;
t_r_cant_temasATocar = 1..CANT_TEMAS_A_TOCAR;
t_tiempo_dj = 1..TIEMPO_DJ;
t_tiempo_tema = 1..MAX_DURACION;
t_vstr_tema= ARRAY[t_r_cant_temas] OF STRING[LONG_STR_TEMA];
t_dur_tema = ARRAY[t_r_cant_temas] OF t_tiempo_tema;
t_cant_rep_tema = ARRAY[t_r_cant_temas] OF BYTE;
t_v_dj = ARRAY[t_r_cant_djs] OF STRING[LONG_STR_NOMBRE];
t_m_temas_a_tocar = ARRAY[1..2,t_r_cant_temasATocar] OF BYTE;
t_v_tiempo_dj = ARRAY[t_r_cant_djs] OF t_tiempo_dj;
VAR
vNombreTemas:t_vstr_tema;
rCantTemas:t_r_cant_temas;
vDuracionTemas:t_dur_tema;
vCantRepetidos:t_cant_rep_tema;
vListaDjs:t_v_dj;
rListaDjs:t_r_cant_djs;
mTemasATocar:t_m_temas_a_tocar;
rTemasATocar:t_r_cant_temasATocar;
vTiempoDj:t_v_tiempo_dj;
opc:char;

{Carga el menu principal, limpiando la pantalla cada vez que se muestra.}
FUNCTION crearMenuPrincipal:char;
VAR a:char;
BEGIN
repeat
clrscr;
writeln('Programa Fiesta Electronica');
writeln(' ');
writeln('Por favor ingrese el nro. de la opcion deseada y para salir ingrese ', SALIR);
writeln(' ');
writeln('Cargar:');
writeln(' 1)Lista Oficial de Temas.');
writeln(' 2)Lista de DJs.');
writeln(' 3)Temas a Tocar.');
writeln('Reportes:');
writeln(' 4)Dj que mas tiempo tocara.');
writeln(' 5)Listado de temas mas tocados.');
writeln(' 6)Listado de temas.');
writeln(' 7)Dj que tocara el tema mas largo.');
writeln(' ');
write('Opcion deseada: ');
readln(a);
until ((a > '0') and (a < '8')) or (upcase(a) = SALIR);
crearMenuPrincipal:=a;
END;

FUNCTION validarDuracionFormato(minutos:t_minutos):Boolean;
var

a:string[2];
mm,cod,ss :integer;
esCorrecto: boolean;
begin
esCorrecto:= false;

if (minutos[3]= ':') then
begin
a:=Copy(minutos,1,2);
val (a,mm,cod);
if (mm<=15) and (cod=0) then
begin
a:=copy(minutos,4,2);
val(a,ss,cod);
if (((mm<15) and (ss<=59)) or ((mm=15) and (ss=0))) and (cod=0) then
esCorrecto:=true;
end;
end;
validarDuracionFormato:=esCorrecto;
end;



{ESTO si DEBO REALIZARLO YO}
PROCEDURE cargarListaOficial(var vNombreTemas:t_vstr_tema;
var vDuracionTemas:t_dur_tema;
var vCantRepetidos:t_cant_rep_tema;
var rCantTemas:t_r_cant_temas);
VAR A:BYTE;
BEGIN
READLN(A);
END;
{ESTO NO, LO HACE OTRO}
PROCEDURE cargarListaDjs(var vListaDjs:t_v_dj;
var rListaDjs:t_r_cant_djs;
var vTiempoDj:t_v_tiempo_dj);
VAR A:BYTE;
BEGIN
READLN(A);
END;
{ESTO NO, LO HACE OTRO}
PROCEDURE cargarTemasATocar( var vNombreTemas:t_vstr_tema;
var vDuracionTemas:t_dur_tema;
var vCantRepetidos:t_cant_rep_tema;
var rCantTemas:t_r_cant_temas;
var vListaDjs:t_v_dj;
var rListaDjs:t_r_cant_djs;
var vTiempoDj:t_v_tiempo_dj;
var mTemasATocar:t_m_temas_a_tocar;
var rTemasATocar:t_r_cant_temasATocar);
VAR A:BYTE;
BEGIN
READLN(A);
END;
{
- Los vectores estan pasados por referencia para otimizar el uso de memoria, y su rango no ya que es despreciable el tamaño.
}
{ESTO NO; LO HACE OTRO}
PROCEDURE ListadoMaxTiempoDj( var vListaDjs:t_v_dj;
rListaDjs:t_r_cant_djs;
var vTiempoDj:t_v_tiempo_dj);
VAR A:BYTE;
BEGIN
READLN(A);
END;

{ESTO SI DEBO REALIZARLO Y NO PUEDO}
PROCEDURE ListadoTemasMasTocado( var vNombreTemas:t_vstr_tema;
var vDuracionTemas:t_dur_tema;
var vCantRepetidos:t_cant_rep_tema;
rCantTemas:t_r_cant_temas);
VAR A:BYTE;
BEGIN
READLN(A);
END;

{ESTE NO, lo hace OTRO}
PROCEDURE ListaTemasOrden( vNombreTemas:t_vstr_tema;
rCantTemas:t_r_cant_temas);
VAR A:BYTE;
BEGIN
{vNombreTemas se esta pasando por valor ya que se va usar el
metodo de ordenamiento por incersion ya que es el mas optimo
de los que vimos }
READLN(A);
END;

{ESTO NO, LO HACE OTRO}
PROCEDURE ListadoTemaMaxDuracion( var vNombreTemas:t_vstr_tema;
var vDuracionTemas:t_dur_tema;
rCantTemas:t_r_cant_temas);
VAR A:BYTE;
BEGIN
READLN(A);
END;

BEGIN
{-podria pasar un parametro de mensajes para cuando termino algo ok
o mal, para que sepa.
-mejor lo manejo dentro de cada funcion los mensajes esos}
repeat
opc := crearMenuPrincipal;
case opc of
'1': begin {nada} end;
'2': begin {nada} end;
end;
until (upcase(opc) = SALIR);
END.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder