Duda pascal

Iniciado por netca, 25 Marzo 2011, 21:22 PM

0 Miembros y 1 Visitante están viendo este tema.

netca

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

Khronos14

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.

netca

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!

d(-_-)b

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 (delphi) [Seleccionar]
program User;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
Pass: String;
Acceso: Boolean;
begin
  Acceso := true;

  while Acceso do

   begin
    Writeln('Introduzca su Password por favor:');
    Readln(Pass);

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

   else if (Pass = 'ACCESO') then
      Acceso := false;

   end;
end.


Suerte.

saludos...
Max 400; caracteres restantes: 366

skapunky

#4
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.    
Killtrojan Syslog v1.44: ENTRAR