Desplazamiento+de+letras

=__**Desplazamiento de letras**__=

Escribir un programa que lea repetidamente, desde teclado, una letra y muestre en pantalla otra, que esté desplazada de ella, en el código ASCII, una Distancia positiva (introducida también por teclado, al inicio de la ejecución del programa).

El programa finalizará cuando el usuario introduzca el carácter punto.

Tras leer un carácter que no sea ni una letra ni un punto el programa no debería hacer nada.

NOTA: Para este programa, se debe considerar el alfabeto circular (detrás de la 'Z' viene la 'A') y no se considerarán ni las vocales acentuadas ni las letras 'ñ' y 'Ñ'.

**Utilizando los procedimientos INC y DEC** code format="pascal" PROGRAM DespLetr ; VAR cCaracter : Char ; byCodigo, byPosicEnAlfabeto, byDistancia : Byte ; BEGIN WriteLn ('Programa que muestra letras desplazadas ',           'una distancia en el código ASCII') ; WriteLn ;

Write ('Escribe el valor del desplazamiento:' ); ReadLn (byDistancia) ;

{ El alfabeto tiene 26 letras por ello el máximo    } { desplazamiento será 25 (el desplazamiento efectivo }  { estará entre 0 y 25 )                              }

byDistancia := byDistancia MOD 26 ;

Write ('Escribe letra Mayúscula (. para terminar): ') ; ReadLn (cCaracter) ;

WHILE cCaracter <> '.' DO      BEGIN IF ('A' <= cCaracter) AND (cCaracter <= 'Z') THEN BEGIN { código de la letra desplazada } Inc ( cCaracter, byDistancia ) ;

{ si se ha sobrepasado la letra 'Z') }          IF cCaracter > 'Z' THEN              Dec ( cCaracter, 26 ) ;

WriteLn ('Letra desplazada: ', cCaracter) END ;

Write ('Escribe letra Mayúscula (. para terminar): '); ReadLn (cCaracter) ; END ;

Readln ; END. code

**Sin utilizar los procedimientos INC y DEC** code format="pascal" PROGRAM DespLetr ; VAR cCaracter : Char ; byCodigo, byPosicEnAlfabeto, byDistancia : Byte ; BEGIN WriteLn ('Programa que muestra letras desplazadas ',           'una distancia en el código ASCII') ; WriteLn ;

Write ('Escribe el valor del desplazamiento:' ); ReadLn (byDistancia) ;

{ El alfabeto tiene 26 letras por ello el máximo    } { desplazamiento será 25 (el desplazamiento efectivo }  { estará entre 0 y 25 )                              }

byDistancia := byDistancia MOD 26 ;

Write ('Escribe letra Mayúscula (. para terminar): ') ; ReadLn (cCaracter) ;

WHILE cCaracter <> '.' DO     BEGIN IF ('A' <= cCaracter) AND (cCaracter <= 'Z') THEN BEGIN { código de la letra desplazada } byCodigo := Ord (cCaracter) + byDistancia ;

{ si se ha sobrepasado la letra 'Z') }          IF byCodigo > Ord ('Z') THEN              byCodigo := byCodigo - 26 ;{ son 26 letras }

cCaracter := Chr (byCodigo) ; {letra desplazada}

WriteLn ('Letra desplazada: ', cCaracter) END ;

Write ('Escribe letra Mayúscula (. para terminar): '); ReadLn (cCaracter) ; END ;

Readln ; END. { FIN DEL PROGRAMA DESPLETR.PAS }

code