Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: netca en 25 Marzo 2011, 21:22 pm



Título: Duda pascal
Publicado por: netca en 25 Marzo 2011, 21:22 pm
 //Crea un programa que pida al usuario su contraseña. Deberá terminar cuando
 //introduzca como contraseña la palabra "acceso", pero volvérsela a pedir
 //tantas veces como sea necesario.

Program while;

 var
   contrasena:char;
   acceso:boolean;


 begin
 acceso:=true;
 while acceso do
   begin
   Writeln('Introduzca su contrasenaa por favor:  ');
   Readln(contrasena);
   

   if (contrasena='acceso' )then
      acceso:=false;


   end;




 end.


Que es lo que estoy haciendo mal? o.o , porque si pongo acceso sigue pidiendo la contreña....
                                     


Título: Re: Duda pascal
Publicado por: Khronos14 en 26 Marzo 2011, 00:10 am
Hola netca, te comento:

- Dependiendo del compilador que uses, utilizar la ñ como identificador de constantes, variables y funciones puede no estar soportado. La ñ forma parte del ASCII extendido, por eso puede que te de un error ahí. Delphi 2010 si que lo admite.

- La variable contraseña la estas declarando como tipo char, que sólo almacena un caracter. Deberías declararla como un array o utilizar el tipo string.

- El fallo de la condición es ese, contraseña sólo puede almacenar un caracter, por eso la condición nunca se va a cumplir.

Saludos.


Título: Re: Duda pascal
Publicado por: netca en 30 Marzo 2011, 20:57 pm
Si , gracias por responder. El problema principal es que la variable la puse en char y tenia que ponerla en string. Error de parte mia.

Saludos!


Título: Re: Duda pascal
Publicado por: d(-_-)b en 30 Marzo 2011, 21:46 pm
Una simple sugerencia por si te sirve de algo.

Una forma sencilla de permitir al programa introducir contraseña en minúscula como en mayúscula.

Código
  1. program User;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.  SysUtils;
  7.  
  8. var
  9. Pass: String;
  10. Acceso: Boolean;
  11. begin
  12.  Acceso := true;
  13.  
  14.  while Acceso do
  15.  
  16.   begin
  17.    Writeln('Introduzca su Password por favor:');
  18.    Readln(Pass);
  19.  
  20.   if (Pass = 'acceso') then
  21.       Acceso := false
  22.  
  23.   else if (Pass = 'ACCESO') then
  24.      Acceso := false;
  25.  
  26.   end;
  27. end.

Suerte.

saludos...


Título: Re: Duda pascal
Publicado por: skapunky en 3 Abril 2011, 22:08 pm
Hecho en falta una cosa:

while Acceso do


Mientras "accéso" igual a que? en todo caso : Mientras Acceso = true

También se puede ahorrar un if, utilizando una instrucción "OR" cuando se comprueva si PASS = ACCESO.

if (Pass = 'acceso') or (Pass = 'ACCESO')  then
  Acceso := false


Nada, solamente estos dos detalles.