Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

02/02/2010 #1


comparar variables
estoy haciendo un programa en picbasic para una alarma y a la hora de meter la contraseña no me la reconoce nunca ccomo correcta. He hecho 4 variables para guardar los 4 numeros de la contraseña y otras 4 para guardar la que estoy metiendo.

Clave1,Clave2,Clave3,Clave4 son la clave almacenada y ClaveA,ClaveB,ClaveC,ClaveD son las variables de la que voy introduciendo con el teclado. despues de almacenar las tecleadas hago esta comparacion

If clave1=clavea and clave2=claveb and clave3=clavec and clave4=claved then bien
goto mal

nunca me da bien aunque la meta bien, para comprobar que las guardaba bien puse este codigo para que se mostrasen ambas en display

print at 1,1, clave1,clave2,clave3,clave4,clavea,claveb,clavec,c laved

y en la pantalla se muestra por ejemplo 12341234

se me a ocurrido hacer una funcion Xor pero he estado buscando y no se como hacerla

gracias de antemano
15/02/2010 #2

Avatar de Apollo

Respuesta: comparar variables
Hola jonbul:

El problema parece ser la estructura del IF:

El IF solo en un renglón sólo es para comprobar una sola vez, no lleva ni ELSE ni el ENDIF, y en caso de no ser cierta la comparación, simplemente sigue con el código.

Si tu codigo es:

IF.......... Then bien
goto mal

El "bien" debe estar después del código siguiente, de otra manera se pueden repetir las dos ordenes, ir a "bien" y "mal".

Probé con este código y ya funcionó bien.

inicio:
A1 = 1
A2 = 1
A3 = 1
A4 = 1
B1 = 1
B2 = 1
B3 = 1
B4 = 1

checar:
IF A1=B1 AND A2=B2 AND A3=B3 AND A4=B4 Then ok

PRINT AT 2,5, "Desigual"
DelayMS 1000
Cls
goto checar

' ------- continua con el programa principal -----

ok:
PRINT AT 1,5, "igual"
DelayMS 1000
Cls
goto checar
END

O puedes poner la forma "normal" del IF:

inicio:
A1 = 1
A2 = 1
A3 = 1
A4 = 1
B1 = 1
B2 = 1
B3 = 1
B4 = 1

checar:
IF A1=B1 AND A2=B2 AND A3=B3 AND A4=B4 Then
GOTO ok
ELSE
GOTO no
ENDIF

no:
PRINT AT 2,5, "Desigual"
DelayMS 1000
Cls
goto seguir

ok:
PRINT AT 1,5, "igual"
DelayMS 1000
Cls

seguir:
------- continua el programa principal -----

END
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.