0% encontró este documento útil (0 votos)
223 vistas3 páginas

Algoritmos para Manejo de Empleados

El documento presenta tres problemas relacionados con estructuras de datos. El primero pide generar un archivo ordenado descendentemente por apellido a partir de otro ordenado ascendentemente por sección usando una lista auxiliar. El segundo desarrolla el operador fMayor para comparar fechas. El tercero implementa el operador linsertarPpio para listas doblemente enlazadas y listas estáticas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
223 vistas3 páginas

Algoritmos para Manejo de Empleados

El documento presenta tres problemas relacionados con estructuras de datos. El primero pide generar un archivo ordenado descendentemente por apellido a partir de otro ordenado ascendentemente por sección usando una lista auxiliar. El segundo desarrolla el operador fMayor para comparar fechas. El tercero implementa el operador linsertarPpio para listas doblemente enlazadas y listas estáticas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD CAECE

1er. Parcial de Algoritmos y Estructuras 1


Tema 2 JAIME GAONA QUIROGA

1) A partir del archivo Empl1 ordenado ascendentemente por sección, se


pide generar el archivo Empleados2, de igual estructura, ordenado
descendentemente por apellido de empleado. Utilizar una lista como
estructura auxiliar (definir claramente la estructura de Tdato). La sección
es un campo que se repite varias veces.

ARCHIVO EMPLEADO
. Sección
. Apellido
. Teléfono
. Dirección

Escribir claramente tipos y variables, y manejar errores o incongruencia de


datos

2) Desarrollar el operador fmayor para una de las tres implementaciones de


tfecha estudiadas en la práctica 7.

3) Desarrollar el operador linsertarPpio para las siguientes


implementaciones

a. Listas doblemente enlazadas lineales


b. Listas estáticas sin corrimiento de elementos

1)
regEmpleados: registro
sección: cadena [8]
apellido: cadena [30]
teléfono: cadena [10]
dirección: cadena [30]
fin registro

tDato: registro
clave: tClave
ape: cadena [30]
tel: cadena [10]
dir: cadena [30]
fin registro

tClave: cadena [8]

Algoritmo principal
Variables: arch, archSal: archivo de regEmpleados; l: tLista; error: Logico
cargarArchivo(l, error)
si no error entonces
generarArchivoSalida(l)
sino
mostrar (“La memoria es insuficiente”)
fsi
fin algoritmo

Procedimiento cargarArchivo(ref l: tLista, ref error: Logico)


Variables:
reg: regEmpleados
dato: tDato
Error  falso
Abrir(arch)
Leer(arch, reg)
Lcrear(l)
Mientras no fin (arch) y no lLlena(l) hacer
dato.ape  reg.apellido
dato.tel  reg.telefono
dato.dir  reg.direccion
dato.clave  reg.seccion
lInsertarEnOrden(l, dato, ‘D’)
leer (arch, reg)
fin mientras
error  no fin (arch)
cerrar(arch)
fin procedimiento

Procedimiento generarArchivoSalida(ref l: tLista):


Variables: dato: tDato; reg: regEmpleado
Crear(archSal)
Si no lVacia(l) entonces:
Lppio(l)
Linfo(l, dato)
Reg  dato
Grabar (archSal, reg)
Lsig(l)
Mientras no lFin(l) hacer:
Linfo(l, dato)
Reg  dato
Grabar(archSal, reg)
Lsig(l)
Fin mientras
Fin si
Cerrar(archSal)
Fin procedimiento
2) Registro
Función fMayor (ref f1: tFecha, ref f2: tFecha): lógico
Si f1.anio > f2.anio entonces
fMayor ← verdadero
sino
Si f1.anio < f2.anio entonces
fMayor ← falso
sino
Si f1.mes > f2.mes entonces
fMayor ← verdadero
sino
Si f1.mes < f2.mes entonces
fMayor ← falso
sino
Si f1.dia > f2.dia entonces
fMayor ← verdadero
sino
fMayor ← falso
FinSi
FinSi
FinSi
FinSi
FinSi
FinFunción

3a) Listas doblemente enlazadas liniales


Procedimiento Linsertarppio (ref l: tlista, val x: tDato)
VL:nuevo: Puntero
CrearNodoDoble(nuevo, x)
si l.cab = nil entonces
l.cab <-- nuevo
sino
nuevo↑.sig <-- l.cab
l.cab↑.ant <-- nuevo
l.cab <-- nuevo
finSi
finprocedimiento

3b) Listas estáticas sin corrimiento de elementos


Procedimiento Linsertarppio (ref t: tlista, valor x: tDato)
Variable local: aux: tdato
aux <-- l.plibre
l.plibre <-- l.elem[p.libre].sig
l.elem[aux].info <-- x
l.elem[aux].sig <-- l.pocup
l.pocup <-- aux
finprocedimiento

También podría gustarte