04-07-2013, 15:40
Estaba haciendo el ejercicio 19 del modulo 2 y me surgio una duda, el ejercicio es el siguiente:
Ej. MII-19: Dado el archivo ‘ALUMNOS.dat’ con los datos personales de alumnos ordenado por legajo, con el siguiente diseño:
a.1 Legajo (8 dígitos) a.2 Apellido y nombre ( 30 caracteres)
a.3 Domicilio (20 caracteres) a.4 Código postal (4 dígitos)
a.5 Teléfono (10 caracteres) a.6 Año de ingreso (4 dígitos)
Y otro archivo con el mismo orden que el mencionado llamado ‘NOVEDADES.dat’, con las actualizaciones (altas, bajas, y modificaciones) a ser aplicadas, donde cada registro contiene además de todos los campos de Alumnos.dat un código de operación (‘A’= Alta, ‘B’= Baja, ‘M’= Modificación).
Se pide desarrollar todos los pasos necesarios para realizar un programa que genere un archivo actualizado ‘ALUMACTU.dat’ con el mismo diseño.
A mi lo que se me ocurrio fue utilizar corte de control pero no logro darme cuenta como hacer para que el archivo 'ALUMCTU.dat' quede ordenado. Lo unico que se me ocurrio fue como saber q datos poner:
Luego de las lecturas anticipadas para ver si es fin de archivo y dentro del ciclo while con la condicion de que no sea fin de archivo se me ocurrio lo siguiente:
si esta en el archivo Novedad y tmb en alumnos:
el campo "código de operación" solo puede ser 'M' o 'B'
entonces hago un ciclo while mientras no sea fin de archivo y los campos legajo de ambos registros sean iguales, por ultimo con un if pregunto si el campo "código de operación" es 'M'
si se cumple : a cada campo del registro actualizado le asigno los del registro novedad
si no se cumple : pregunto con otro if si código de operacion<> 'B' si es asi, a los campos del registro actualizado le asigno los del registro alumnos.
Ahora, si esta en novedad y no esta en alumnos entonces el campo código de operación figura una 'A' {fuera del ciclo while que hice antes con la condicion de que el campo legajo de ambos registros sean iguales}
Para esto hago un ciclo if operación='A'
si se cumple: al registro actualizado le pongo los datos del registro novedad
si no se cumple: al registro actualizado le pongo los datos del registro alumnos
Espero que se entienda algo de todo lo que escribi y si alguien me puede decir como hacer para que el archivo actualizado quede ordenado por numero de legajo se agradece
Ej. MII-19: Dado el archivo ‘ALUMNOS.dat’ con los datos personales de alumnos ordenado por legajo, con el siguiente diseño:
a.1 Legajo (8 dígitos) a.2 Apellido y nombre ( 30 caracteres)
a.3 Domicilio (20 caracteres) a.4 Código postal (4 dígitos)
a.5 Teléfono (10 caracteres) a.6 Año de ingreso (4 dígitos)
Y otro archivo con el mismo orden que el mencionado llamado ‘NOVEDADES.dat’, con las actualizaciones (altas, bajas, y modificaciones) a ser aplicadas, donde cada registro contiene además de todos los campos de Alumnos.dat un código de operación (‘A’= Alta, ‘B’= Baja, ‘M’= Modificación).
Se pide desarrollar todos los pasos necesarios para realizar un programa que genere un archivo actualizado ‘ALUMACTU.dat’ con el mismo diseño.
A mi lo que se me ocurrio fue utilizar corte de control pero no logro darme cuenta como hacer para que el archivo 'ALUMCTU.dat' quede ordenado. Lo unico que se me ocurrio fue como saber q datos poner:
Luego de las lecturas anticipadas para ver si es fin de archivo y dentro del ciclo while con la condicion de que no sea fin de archivo se me ocurrio lo siguiente:
si esta en el archivo Novedad y tmb en alumnos:
el campo "código de operación" solo puede ser 'M' o 'B'
entonces hago un ciclo while mientras no sea fin de archivo y los campos legajo de ambos registros sean iguales, por ultimo con un if pregunto si el campo "código de operación" es 'M'
si se cumple : a cada campo del registro actualizado le asigno los del registro novedad
si no se cumple : pregunto con otro if si código de operacion<> 'B' si es asi, a los campos del registro actualizado le asigno los del registro alumnos.
Ahora, si esta en novedad y no esta en alumnos entonces el campo código de operación figura una 'A' {fuera del ciclo while que hice antes con la condicion de que el campo legajo de ambos registros sean iguales}
Para esto hago un ciclo if operación='A'
si se cumple: al registro actualizado le pongo los datos del registro novedad
si no se cumple: al registro actualizado le pongo los datos del registro alumnos
Espero que se entienda algo de todo lo que escribi y si alguien me puede decir como hacer para que el archivo actualizado quede ordenado por numero de legajo se agradece