[ Foro de Pascal ]

encriptacion de contraseña

11-Jul-2019 23:49
Invitado (Edsel )
3 Respuestas

Hola. tengo que hacer un trabajo practico para la universidad y uno de los puntos propone ingrsar una contraseña donde se muentren asteriscos en vez de la letras y que la persona que los introduzca tenga como maximo 3 intentos. El problema que tengo es que cuando intoduzco primero mal la contraseña y luego bien dentro de los 3 intentos me dice que es inconrrecta la clave aunque sea correcta.
Aqui les adjunto el programa en pascal que he hecho.


var ch:char;
con:string;
cont:integer;
begin
cont:=0;
repeat
Writeln('INGRESE CONTRASEÑA');
ch:=readkey;
WHILE ch<>#13 DO
begin
con:=con+ch;
write('*');
ch:=readkey
end;
if (con=C) then
writeln('la contraseña es correcta')
else
begin
writeln('la contaseña es incorrcta');
cont:=cont+1;
end;
until (con=C) or (cont=3);
readkey;
end.


12-Jul-2019 23:45
Luis Torres (+18)

Te felicito por tu programa está bastante bien hecho, pero tiene un error que se soluciona en una sola línea. Fíjate que si introduces una contraseña por primera vez y ésta falla (verás el mensaje de "Contraseña Incorrecta"), la segunda vez que introduzca la contraseña en la variable 'con' almacenarás que estaba antes (la primera contraseña fallida) más que escribas nuevamente. Esto se debe a que no has inicializado la variable al valor vacío, o sea con:=''. Trata de corregirlo por ti mismo y si no puedes responde a este mensaje y te diré donde va esa nueva línea. Creo que sabrás solucionar el problema por ti mismo.

Saludos.


15-Jul-2019 22:05
Invitado (Erika)

Donde se incializaria en 0 la variable "con"?


16-Jul-2019 03:30
Luis Torres (+18)

No es a cero (0) que se inicializa "con", sino al caracter vacío, es decír a ''. A continuación de tejo el código con la corrección, me discupo por haber puesto unos ClrScr repartidos por allí, tú te encargarás de eliminarlos si te presentan confusión:


program password;

uses CRT;

var ch: char;
    con: string;
    cont: integer;

BEGIN
  cont:= 0;
  ClrScr;
  Repeat
  writeln('INGRESE PASSWORD: ');
  ch:= readkey;
  While (ch<>#13) do
  Begin
   con:=con + ch;
   write('*');
   ch:=readkey
  End;
  If (con='C') then
   begin
    ClrScr;
    writeln('La contrasegna es correcta');
   end
  Else
   begin
     ClrScr;
     writeln('La contrasegna es incorrecta');
     cont:= cont+1;
     con:='';
   end;
  Until (con='C') or (cont=3);
readkey;
END.



Espero haberte ayudado. Saludos.






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