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.
#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");
}
}
que pretendes hacer?
intente arreglarlo nose si era esto lo k pretenias, de todos modos
#include<stdio.h>
int main()
{
int codigo;
int contrasena;
int valida1=1024;
int valida2=4567;
do
{
printf("Ingrese su codigo de usuario");
scanf("%d\n", &codigo);
printf("Ingrese su contraseña");
scanf("%d\n", &contrasena);
{
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");
while(valida2=!4567);
printf("Su contraseña es valida");
}
#include<stdio.h>
int main()
{
int codigo, contrasena, valida1 = 1024, valida2=4567;
do
{
printf("Ingrese su codigo de usuario");
scanf("%d\n", &codigo);
printf("Ingrese su contraseña");
scanf("%d\n", &contrasena);
if (valida1 != 1024)
printf(" Su codigo no es valido");
if (valida2 != 4567)
printf("Su contraseña no es valida");
}
while(valida1 != 1024 && valida2 != 4567);
return 0;
}
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:
do {
printf("Ingrese su contraseña: ");
scanf("%d", &contrasena);
if (contrasena == valida1)
break; // sale del while
if (contrasena == valida2)
break; // sale del while
printf("Su contraseña no es valida\n");
} while(1); // vuelve al inicio del bucle
printf("Su codigo es valido!\n");
Cita de: 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:
do {
printf("Ingrese su contraseña: ");
scanf("%d", &contrasena);
if (contrasena == valida1)
break; // sale del while
if (contrasena == valida2)
break; // sale del while
printf("Su contraseña no es valida\n");
} while(1); // vuelve al inicio del bucle
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.