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