Haz una pregunta
  Foros de Electrónica » Diseño digital » Interfaces y Programación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

17/07/2013 #1

Avatar de wsanchez0915

Hay una forma de simplificar una comparacion de arrays
Buenas a todos Uds. quisiera saber si hay una forma de igualar dos arrays. Me explico; tengo la siguiente sentencia:
Código:
                                if(password[0]==memoria[0] && password[1]==memoria[1] && password[2]==memoria[2]){
                                    //Acceso Concedido
                                    lcd_goto(3,1);
                                    __delay_ms(20);
                                    lcd_puts(Acceso Concedido);
                                    __delay_ms(1000);
                                    menu=3;
                                    posicion=2;
                                    cont=0;
                                    x=0;
                                    entorno(menu,posicion);
                                }else{
                                    lcd_goto(3,1);
                                    __delay_ms(20);
                                    lcd_puts(Acceso Denegado);
                                    __delay_ms(1000);
                                    menu=1;
                                    cont=0;
                                    x=0;
                                    entorno(menu,posicion);
                                }
Quisiera saber si hay una forma más simplificada de hacer esta comparación.

PD. Uso como compilador el Hi-Tech Compiler C de MPLAB ...
17/07/2013 #2

Avatar de ByAxel

Hola,
wsanchez0915 dijo: Ver Mensaje
Quisiera saber si hay una forma más simplificada de hacer esta comparación.
No.

Diría que es la forma clásica y más rápida de hacerlo. También genera poco código asm.
Básicamente solo estás comparando 3 bytes.

Saludos.
18/07/2013 #3

Avatar de palurdo

Si tienes muchos, pongamos N elementos a comparar coincidencia, puedes hacer esto (código ANSI C):

Código:
int i;
for(i=0,(i<N)&&(password[i]==memoria[i]),i++); 
if(i==N) {
// todos los elementos coinciden
}else{
// password[i] no coincide con memoria[i].
}
Pero para tres elementos sólo, es más eficiente evitar el bucle. Ahora si me dices para un password de 16 caracteres pues la cosa ya cambia.
19/07/2013 #4

Avatar de wsanchez0915

Muchas gracias por resporder. Me funciono el bucle.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Interfaces y Programación

Lenguajes de programación, gestión y manejo de puertos

Cerrar
Foros de Electrónica » Diseño digital » Interfaces y Programación

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