3 TRABAJO PRACTICO NUMERO 1
\r
4 1er Cuatrimestre 2000
\r
8 uses TDA_GRAL, ldoblec, tabla, pila_C, crt;
\r
11 T_registro_entrada = record
\r
15 Movimiento: string[1];
\r
16 DNI_hasta: string[8];
\r
18 comando = ( OTRO, INS, IO, ORD, BC, BR, LS, LC, BO, MO, LI);
\r
21 Var mitabla: T_TABLA;
\r
23 infile: file of T_registro_entrada;
\r
27 r: T_registro_entrada;
\r
33 {------- Aca empieza el programa -------}
\r
38 Writeln('Archivo de Entrada:', ParamStr(1));
\r
39 Writeln('Archivo de Salida :', ParamStr(2));
\r
41 Assign(infile, ParamStr(1));
\r
44 Assign(o, ParamStr(2));
\r
47 Writeln(o,'Archivo de Entrada:', ParamStr(1));
\r
48 Writeln(o,'Archivo de Salida :', ParamStr(2));
\r
51 T_TABLA_Crear(mitabla);
\r
52 PILAC_Inicializar (pila);
\r
54 while not eof(infile) do begin
\r
58 { r.comando:= UpCase (r.comando);}
\r
61 write(o,'>',r.comando);
\r
63 write(o,' ',r.nombre);
\r
64 write(o,' ',r.movimiento);
\r
65 write(o,' ',r.dni_hasta);
\r
69 e.nombre:= r.nombre;
\r
71 {Estos bloques son para interpretar los strings y ponerlos en un enumerado}
\r
73 IF r.comando = 'IN' then cmd:= INS
\r
74 ELSE IF r.comando = 'IO' then cmd:= IO
\r
75 ELSE IF r.comando = 'OR' then cmd:= ORD
\r
76 ELSE IF r.comando = 'BC' then cmd:= BC
\r
77 ELSE IF r.comando = 'BR' then cmd:= BR
\r
78 ELSE IF r.comando = 'LS' then cmd:= LS
\r
79 ELSE IF r.comando = 'LC' then cmd:= LC
\r
80 ELSE IF r.comando = 'BO' then cmd:= BO
\r
81 ELSE IF r.comando = 'MO' then cmd:= MO
\r
82 ELSE IF r.comando = 'LI' then cmd:= LI;
\r
84 IF r.movimiento= 'P' then mov:=lsc_primero
\r
85 ELSE IF r.movimiento= 'A' then mov:=lsc_anterior
\r
86 ELSE IF r.movimiento= 'S' then mov:=lsc_siguiente
\r
87 ELSE IF r.movimiento= 'U' then mov:=lsc_ultimo;
\r
93 T_TABLA_Insertar(mitabla, e, mov)
\r
99 T_TABLA_Insertar_O(mitabla, e)
\r
105 T_TABLA_Ordenar(mitabla)
\r
111 T_TABLA_Buscar_Clave (mitabla, r.dni, error );
\r
114 writeln(o,'Error buscando la clave: ',r.dni)
\r
118 T_TABLA_Elem_Cte (mitabla, e);
\r
120 writeln('Encontrado: ', e.nombre);
\r
128 Buscar_por_Rango(mitabla, r.dni, r.dni_hasta, pila);
\r
130 Writeln(o,'RESULTADOS DE LA BUSQUEDA:');
\r
132 Writeln(o,'--------------------------');
\r
134 while not PILAC_vacio(pila) do begin
\r
136 PILAC_sacar(pila, e);
\r
138 writeln(o,' ',e.dni,' - ', e.nombre);
\r
142 Writeln(o,'----- FIN BUSQUEDA ------');
\r
148 If NOT T_TABLA_Vacia (mitabla) then begin
\r
150 T_TABLA_Mover_Cte (mitabla, lsc_primero, error);
\r
154 while NOT error do begin
\r
156 T_TABLA_Elem_Cte (mitabla, e);
\r
158 writeln(o,' ',e.dni,' - ', e.nombre);
\r
160 T_TABLA_Mover_Cte (mitabla, lsc_siguiente, error);
\r
167 Writeln(o, 'TABLA VACIA');
\r
173 T_TABLA_Elem_Cte (mitabla, e);
\r
175 writeln(o,' ',e.dni,' - ', e.nombre);
\r
179 BO: T_TABLA_Borrar_Cte ( mitabla );
\r
181 MO: T_TABLA_Modif_Cte (mitabla, e);
\r
183 LI: T_TABLA_Limpiar (mitabla);
\r
186 writeln(o,' ERROR. Comando desconocido :', r.comando );
\r