[ Foro de Pascal ]
Una aplicación de mensajería de celular codifica los mensajes empleando una llave numérica (entera,
de dos dígitos) que se utiliza para desplazar el código ASCII de los caracteres del mensaje. Por
ejemplo: si la llave de codificación es el número 10, el carácter ‘a’ (cuyo código ASCII es el valor
97) se codificaría como el carácter ‘k’ (cuyo código ASCII es el valor 107).
Escribir un programa correctamente modularizado, que permita ingresar un mensaje (a codificar o ya
codificado) y una llave de codificación, para luego ofrecer las siguientes opciones:
a) Codificar dicho mensaje utilizando el algoritmo de codificación. El programa deberá mostrar
en pantalla el mensaje codificado.
b) Decodificar el mensaje recibido, y mostrar en pantalla el resultado.
Buenas, lo que debes hacer, según entiendo es crear una funtion para codificar el mensaje y otra para decodificarlo, recuerda que las funciones te devuelven un valor, puedes hacer algo como esto:
program Codificador;
Uses
crt;
var
msj: String; // Mensaje
llave: Integer; // Llave de codificación
salir: Boolean; // Salir del programa
op: Char; // Opcion
i: Integer; // Para bucles
// Codifica el mensaje
function codificarMsj(msjC: String): String;
begin
for i:= 1 to length(msjC) do
begin
msjC[i]:= char(ord(msjC[i]) + llave);
end;
codificarMsj:= msjC;
end;
// Descodifica el mensaje
function descodificarMsj(msjD: String): String;
begin
for i:= 1 to length(msjD) do
begin
msjD[i]:= char(ord(msjD[i]) - llave);
end;
descodificarMsj:= msjD;
end;
procedure salida;
begin
WriteLn;
Write('Desea salir? [s] [n]');
repeat
op:= upCase(readkey);
until (op in ['S','N']);
if op = 'S' then
Salir:= True;
end;
// Cuerpo del programa
begin
salir:= False;
repeat
WriteLn;
Write('Ingrese el mensaje: ');
ReadLn(msj);
WriteLn;
Write('Codificar[1] o Descodificar[2] ');
repeat
op:= readkey;
until (op in ['1','2']);
WriteLn;
WriteLn;
Write('Ingrese llave de codificación (2 digitos): ');
ReadLn(llave);
WriteLn;
if op = '1' then
begin
WriteLn('Mensaje codificado: ',codificarMsj(msj));
end
else
begin
WriteLn('Mensaje descodificado: ',descodificarMsj(msj));
end;
Salida;
WriteLn;
until (salir);
end.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)