Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Ander123 en 26 Agosto 2012, 10:27 am



Título: Programa usuario y contraseña
Publicado por: Ander123 en 26 Agosto 2012, 10:27 am
Hola, tengo este programa, y no encuentro el fallo, no se si se pueden poner dos variables diferentes en un "do" con diferentes if.. a ver si me he dejado algo.. esque no lo veo.

Código:
#include<stdio.h>

int main(void)
{
    int codigo, contraseña;
    int valida1=1024, valida2=4567;



    do
    {
        printf("Ingrese su codigo de usuario");
        scanf("%d\n", &codigo);
        printf("Ingrese su contraseña");
        scanf("%d\n", &contraseña);
        {
             if (valida1=!1024)
             printf(" Su codigo no es valido");


        }
        {
            if (valida2=!4567)
        printf("Su contraseña no es valida");

        }


    }
    while
    {
        (valida1=!1024)
        printf("Su codigo es valido");
    }
    {
        (valida2=!4567)
        printf("Su contraseña es valida");
    }
}


Título: Re: Programa usuario y contraseña
Publicado por: Stakewinner00 en 26 Agosto 2012, 12:55 pm
que pretendes hacer?

intente arreglarlo nose si era esto lo k pretenias, de todos modos
Código
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5.    int codigo;
  6. int contrasena;
  7.    int valida1=1024;
  8. int valida2=4567;
  9.  
  10.  
  11.  
  12.    do
  13.    {
  14.        printf("Ingrese su codigo de usuario");
  15.        scanf("%d\n", &codigo);
  16.        printf("Ingrese su contraseña");
  17.        scanf("%d\n", &contrasena);
  18.        {
  19.             if (valida1=!1024)
  20.             printf(" Su codigo no es valido");
  21.  
  22.  
  23.        }
  24.        {
  25.            if (valida2=!4567)
  26.        printf("Su contraseña no es valida");
  27.  
  28.        }
  29.  
  30.  
  31.    }
  32.    while(valida1=!1024);
  33.        printf("Su codigo es valido");
  34.        while(valida2=!4567);
  35.        printf("Su contraseña es valida");
  36.    }
  37.  


Título: Re: Programa usuario y contraseña
Publicado por: -- KiLiaN -- en 26 Agosto 2012, 14:22 pm
Código
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5.    int codigo, contrasena, valida1 = 1024, valida2=4567;
  6.  
  7.     do
  8.    {
  9.        printf("Ingrese su codigo de usuario");
  10.        scanf("%d\n", &codigo);
  11.        printf("Ingrese su contrase&#241;a");
  12.        scanf("%d\n", &contrasena);
  13.  
  14.             if (valida1 != 1024)
  15.               printf(" Su codigo no es valido");
  16.  
  17.             if (valida2 != 4567)
  18.               printf("Su contrase&#241;a no es valida");
  19.  
  20.  
  21.    }
  22.    while(valida1 != 1024 && valida2 != 4567);
  23.  
  24.     return 0;  
  25.    }
  26.  


Título: Re: Programa usuario y contraseña
Publicado por: fabianjsm en 26 Agosto 2012, 14:28 pm
En tu IF estas comparando con valida1, no deberías comparar con contrasena?
El operador de comparación es !=, tu escribes =!.
No necesitas en "\n" en scanf, con "%d" es suficiente, lo que haces es esperar un RETURN extra.
Modificando un poco tu codigo:

Código
  1.    do {
  2.        printf("Ingrese su contraseña: ");
  3.        scanf("%d", &contrasena);
  4. if (contrasena == valida1)
  5. break; // sale del while
  6. if (contrasena == valida2)
  7. break; // sale del while
  8. printf("Su contraseña no es valida\n");
  9. } while(1); // vuelve al inicio del bucle
  10.    printf("Su codigo es valido!\n");


Título: Re: Programa usuario y contraseña
Publicado por: Fire544 en 26 Agosto 2012, 18:26 pm
En tu IF estas comparando con valida1, no deberías comparar con contrasena?
El operador de comparación es !=, tu escribes =!.
No necesitas en "\n" en scanf, con "%d" es suficiente, lo que haces es esperar un RETURN extra.
Modificando un poco tu codigo:

Código
  1.    do {
  2.        printf("Ingrese su contraseña: ");
  3.        scanf("%d", &contrasena);
  4. if (contrasena == valida1)
  5. break; // sale del while
  6. if (contrasena == valida2)
  7. break; // sale del while
  8. printf("Su contraseña no es valida\n");
  9. } while(1); // vuelve al inicio del bucle
  10.    printf("Su codigo es valido!\n");


Si tienes razon, el codigo estaba erratico porque se estaba comparando valida1 con valores constantes y nunca se cumplia la sentencia, la solucion era comparar valida1 con alguna otra variable en este caso con codigo o contraseña, que si dependian del usuario utilizador del codigo o software.