martes, 9 de octubre de 2012

CIFRADO CESAR

Programa que Codifica mediante el procedimiento Cesar pudiendo elegir el desplazamiento:

{Programa de cifrado de caracteres que a cada letra le hace corresponder la que
se encuentra 6 posiciones mas a la derecha, de tal manera que cuando llega a la
z, vuelve a empezar por la a}
program cesar(input,output);
var
   desplazamiento:integer;
   secuencia:string[100];
   letra_cifrada:char;
   contador,posicion_ascii:byte;

begin
  writeln('Introduzca una secuencia de caracteres acabada en punto:');
  readln(secuencia);
  writeln('Secuencia codificada:');
  contador:=1;
  desplazamiento:=2;
  while (secuencia[contador]<>'.') do
    begin
      posicion_ascii:=ord(secuencia[contador]);
      If ((64<posicion_ascii) and (posicion_ascii<(91-desplazamiento))) or
      ((96<posicion_ascii) and (posicion_ascii<(123-desplazamiento))) then
      {Si el caracter introducido esta en el intervalo ascii basta con sumar 6 a
      las posicion del caracter original para encontrar la posicion del caracter
      cifrado}
      begin
        posicion_ascii:=posicion_ascii+desplazamiento;
        letra_cifrada:=chr(posicion_ascii);
        write(letra_cifrada)
      end
      {En cambio si la letra no se encuentra en esos dos intervalos
      a la posicion de la letra hay que restarle 26 (para volver a empezar
      por la a, mayuscula o minuscula) y despues sumarle 6, con lo que en
      definitiva se le restan 20}
      else if (((91-desplazamiento)<=posicion_ascii)and(posicion_ascii<91)) or
      (((123-desplazamiento)<=posicion_ascii)and(posicion_ascii<123)) then
      begin
        posicion_ascii:=posicion_ascii-(26-desplazamiento);
        letra_cifrada:=chr(posicion_ascii);
        write(letra_cifrada)
      end
      else
      {Por el contrario, si el caracter introducido no esta en ninguno de los
      asnteriores intervalos, el caracter introducido no corresponde con una letra
      por lo que se le advierte al usuario que no es valido, y no se realiza
      ningun calculo}
      write(letra_cifrada);
      contador:=1+contador
    end;
  readln
end.


Salu10!

No hay comentarios:

Publicar un comentario