Copiar un archivo secuencial en un archivo directo

Antes que nada agradezco por la colaboración de cada uno de ustedes, mi consulta se refiere a que ma piden realizar el siguiente ejercicio:
Diseñe algoritmo que copie el archivo secuencial Agenda creado anteriormente en un archivo directo Directo_Agenda, para que cada registro mantenga su posición relativa.
Mi consulta se refiere a si yo creándolo estoy cumpliendo con lo que me piden ya que dentro de lo que he visto y buscado lo único que se para manipular esta clase de archivos son: la creación, altas, bajas, modificación y consulta.
Mi respuesta sería:
algoritmo Crear_Archivo_Directo
const
max = <valor>
tipo
registro: Directo_Agenda
Entero: cod
Cadena : Nombre
Cadena: Dirección
Entero: Edad
Carácter: ocupado
Fin registro
archivo_d de Directo_Agenda: arch
arch: f
Directo_Agenda: persona
Entero: i
Inicio
crear(f,'Directo_Agenda')
desde i = 1 hasta max hacer
Persona. Ocupado ' '
Escribir(f, persona, i)
Fin desde
Cerrar(f)
Fin

Desde ya muchas gracias si alguien me puede decir si resuelvo el ejercicio de esta manera, ya que intepreto la creación cuando me pide el ejercicio la copia.

1 respuesta

Respuesta
1
Zenhteno 1984!
Echo en falta las órdenes de apertura, lectura y cierre del fichero secuencial. Cada registro que grabas ha debido ser leído en ese mismo paso.
Por otra parte, al usar la constante max estás quitando generalidad al programa
Es mejor un bucle MIENTRAS no FIN(fichero_secuencial) en el que incrementes i y traspases registros del secuencial al directo hasta que se encuentre el fin del fichero secuencial y entonces sales del bucle.
Eso es todo de momento, creo que podrás hacerlo por ti mismo.
archHola, antes que nada expreso mi agradecimiento por su disponibilidad y orientación que me ha sido de gran ayuda en un tema en el que no he encontrado mucho material que me sirva de referencia, ahora prosigo a mostrarle mi desarrollo para molestarlo si le puede pegar una mirada:
algoritmo Copiar_Archivo_Directo
Tipo
Registro: Directo_Agenda // declaro archivo directo
entero: cod
cadena : Nombre
cadena: Dirección
entero: Edad
carácter: ocupado
Fin registro
archivo_d de Directo_Agenda: arch
registro: Agenda //declaro archivo secuencial
entero: cod
cadena : Nombre
cadena: Dirección
entero: Edad
fin registro
archivo_s de Agenda: arch
var //declaro variables
arch: f
arch_s: g
Directo_Agenda : persona
Agenda: persona_agenda
entero: i
inicio
i = 0
crear(f,'Directo_Agenda') //creo archivo directo
abrir(f,l/e,'Directo_Agenda') // abro archivo directo
abrir(g,l,'Agenda') // abro archivo secuencial
mientras no EOF (g) hacer
leer(g,persona_agenda) // leo archivo secuencial
escribir(f,persona_agenda,i) // copio registro secuencial en directo
i = i + 1
Fin mientras
Cerrar(g)
Cerrar(f)
Fin
Bueno antes de despedirme agradezco nuevamente su disposición para conmigo ya que ficheros es un tema en el que no he encontrado mucho material y no cuento con un docente que le interese el tema o demuestre saber ya que los ejemplos que ha dado son muy básicos y sacados de una bibliografía muy antigua, desde ya muchas gracias, que se encuentre muy bien saludos!.
Si, es así exactamente. Ahora, si hubiera que implementarl, o habría que usar las órdenes especificas del lenguaje de programación elegido, pero ese es el esqueleto. Esas órdenes supongo que te saldrán en la ayuda o manual del programa que utilices para compilar. O en la ayuda de Visual Basic para Excel, Access o lo que uses. Es que este tipo de operaciones si que suenan a antiguo, no las asocio con los programas actuales que te lo hacen todo con clics de ratón.
Desde ya muchas gracias por tu colaboración para conmigo, ya que este tema en lógica lo estoy estudiando por mi cuenta ya que está en mi plan de estudio pero por lo visto no tienen pensado explicarlo. Muchas gracias, que te encuentres muy bien, saludos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas