with text_io; use text_io; procedure codificar is -- Definicion de variables. linea, nomFic: string(1..255); tamLin,tamNom: integer range 0..255; clave: string(1..10); tamCla: integer range 0..10; fOrig,fDest: File_Type; procedure cifrar(laCadena: in out string; tamCad: integer; laClave: string; tamCla: integer) is ---------------------------------------------------------------------- -- Procedimiento: cifrar -- Programador: Area de Lenguajes y Sistemas Informaticos -- Fecha: Noviembre 1997 -- Modificado por: Area de Lenguajes y Sistemas Informaticos -- Fechas Modificacion: Noviembre 1998 ----------------------------------------------------------------------- -- Este procedimiento codifica la cadena de caracteres almacenada -- en la variable 'laCadena' utilizando como clave la cadena de -- caracteres almancenada en la variable 'pal'. El metodo de -- codificacion consiste en utilizar los digitos que forman la clave -- para sumarselos consecutivamente a los caracteres de la cadena. ----------------------------------------------------------------------- primero: constant integer := character'pos(' '); ultimo: constant integer := character'pos('~'); i: integer range 0..tamCad; j: integer range 1..tamCla; aux1, aux2: character; begin i:= 0; j:= 1; while (i < tamCad) loop i:= i + 1; aux1:= laCadena(i); aux2:= laClave(j); aux1:= character'val((character'pos(aux1) + character'pos(aux2) - character'pos('0') - primero) mod (ultimo - primero + 1) + primero); laCadena(i):= aux1; if j < tamCla then j:= j + 1; else j:= 1; end if; end loop; end cifrar; begin put("Cual es el fichero original?"); new_line; get_line(nomFic,tamNom); open(fOrig,In_File,nomFic(1..tamNom)); put("Cual es el fichero destino?"); new_line; get_line(nomFic,tamNom); create(fDest,Out_File,nomFic(1..tamNom)); put("Cual es la clave?"); new_line; get_line(clave,tamCla); while (not End_Of_File(fOrig)) loop get_line(fOrig,linea,tamLin); --Leemos una l'inea del fichero cifrar(linea, tamLin, clave, tamCla); put_line(fDest,linea(1..tamLin)); end loop; close(fOrig); close(fDest); end codificar;