[ Foro de Pascal ]

necesito ayuda con este programa, no entiendo como plantearlo utilizando FUNCTION

14-May-2022 20:31
Invitado (Micaela)
1 Respuestas

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.


22-May-2022 17:20
Invitado (Roliveira)

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.)