Algoritmo de ordenación de raíz
PSEUDOCÓDIGO
MÓDULO Ordenacion_de_raiz DATOS PARÁMETROS Recibe NOMBRE_F cadena ** fichero original Recibe NOMBRE_F_AUX(10) de cadenas ** ficheros auxiliares VARIABLES SEGUIR lógica ** seguir/no seguir con las iteraciones ITERACION entera ** contador de iteraciones INICIO SEGUIR ← Verdadero ** seguir iterando ITERACION ← 1 Repetir Separar (NOMBRE_F, NOMBRE_F_AUX, ITERACION, SEGUIR) Concatenar (NOMBRE_F, NOMBRE_F_AUX) ITERACION ← ITERACION +1 Hasta que (SEGUIR = Falso) FIN
CÓDIGO C
PRONTO SERÁ INCORPORADO....
El módulo Separar realiza una partición de un fichero origen en 10 ficheros destino. La partición se realiza copiando cada registro del fichero origen en el destino que le corresponda, en función de la cifra de la clave coincidente con la posición dada por ITERACION: si la cifra es 0, el registro se lleva al primer fichero destino, si es 1, se lleva al segundo,..., si es 8 se lleva al penúltimo y si es 9 se lleva al último. El parámetro SEGUIR tomará valor Falso si no deben proseguir las iteraciones (si se han procesado todas las cifras de la clave más larga).
PSEUDOCÓDIGO
MÓDULO Separar DATOS PARÁMETROS Recibe NOMBRE_ORIGEN cadena ** fichero a ordenar Recibe NOMBRE_DESTINO(10) de cadenas ** ficheros auxiliares Recibe ITERACION entera ** iteración actual Transforma SEGUIR lógica ** seguir/no seguir ordenando VARIABLES REG de tipo REGISTRO ** registro de un fichero CIFRA entero ** una cifra de la clave F_O fichero de REGISTRO ** fichero origen F_D(10) de ficheros de REGISTRO ** ficheros destino I entera ** contador INICIO SEGUIR ← Falso Para I desde 1 hasta 10 F_D(I) ← Abrir NOMBRE_DESTINO(I) para escritura fin-para F_O ← Abrir NOMBRE_ORIGEN para lectura Mientras ( FF(F_O) = Falso) hacer Leer REG, F_O CIFRA ← Obtener_cifra(REG.CLAVE, ITERACION, SEGUIR) Escribir REG, F_D(CIFRA+1) fin-mientras Para I desde 1 hasta 10 Cerrar F_D(I) fin-para Cerrar F_O FIN
CÓDIGO C
PRONTO SERÁ INCORPORADO....
El módulo Obtener_cifra obtiene la cifra de la clave que corresponde a la iteración actual del algoritmo. Además, indica si el algoritmo de ordenación debe continuar con las iteraciones (si la clave tiene al menos otra cifra a la izquierda de la considerada):
PSEUDOCÓDIGO
MÓDULO Obtener_cifra devuelve entero DATOS PARÁMETROS Recibe CLAVE entero ** clave de un registro Recibe ITERACION entero ** iteración actual Transforma SEGUIR lógica ** seguir/no seguir iterando VARIABLES I entero ** contador CIFRA entero ** una cifra de la clave N entero ** copia de la clave INICIO N ← CLAVE Para I desde 1 hasta ITERACION CIFRA ← N MOD 10 ** resto de la división N ← N DIV 10 ** división entera fin-para Si (N ≠ 0) entonces SEGUIR ← Verdadero fin-si DEVOLVER CIFRA FIN
CÓDIGO C
PRONTO SERÁ INCORPORADO....
El módulo Concatenar copia el contenido de los 10 ficheros auxiliares sobre el fichero original, empezando por el fichero 1 y terminando por el 10:
PSEUDOCÓDIGO
MÓDULO Concatenar DATOS PARÁMETROS Recibe NOMBRE_DESTINO cadena ** fichero a ordenar Recibe NOMBRE_ORIGEN(10) de cadenas ** ficheros auxiliares VARIABLES REG de tipo REGISTRO F_D fichero de REGISTRO F_O(10) de ficheros de REGISTRO I entera INICIO Para I desde 1 hasta 10 F_O(I) ← Abrir NOMBRE_ORIGEN(I) para lectura fin-para F_D ← Abrir NOMBRE_DESTINO para escritura Para I desde 1 hasta 10 Mientras ( FF(F_O(I)) = Falso ) hacer Leer REG, F_O(I) Escribir REG, F_D fin-mientras fin-para Para I desde 1 hasta 10 Cerrar F_O (I) fin-para Cerrar F_D FIN
CÓDIGO C
PRONTO SERÁ INCORPORADO....
Comentarios
Publicar un comentario