Buenas.
Estoy iniciandome en la programación, he comenzado por el lenguaje C.
Me descargue un "manual" de C, en el hay varios ejercicios para practicar.
Mi duda esta en este ejercicio:
• Crea un programa que pida al usuario su código de usuario (un número entero) y su
contraseña numérica (otro número entero), y no le permita seguir hasta que introduzca
como código 1024 y como contraseña 4567.
Yo hago esto:
#include <stdio.h>
main()
{
int nickV = 1024;
int nick;
int passV = 4567;
int pass;
do
{
printf("\n\n\n\n\t\t\t\tNICK:");
scanf("%d", nick);
printf("\n\t\t\t\tPASS:");
scanf("%d", pass);
if ((pass != passV) && (nick != nickV)) printf("No valida");
}
while ((nick != nickV) && (pass != passV));
printf("Aceptada");
}
El programa se compila bien, se ejecuta, y cuando inserto el nick y la pass y doy a enter me sale el típico error de Windows "XXXXXX.exe dejo de funcionar".
¿Alguien me puede ayudar? Gracias de antemano.
Saludos
El problema radica en que scanf necesita la dirección de la variable a leer por lo cual
debes cambiar esto:
scanf("%d", pass); ---------> scanf("%d", &pass);
En ambos casos el codigo corregido
#include <stdio.h>
int main()
{
int nickV = 1024;
int nick;
int passV = 4567;
int pass;
do
{
printf("\n\n\n\n\t\t\t\tNICK:");
scanf("%d", &nick);
printf("\n\t\t\t\tPASS:");
scanf("%d", &pass);
if ((pass != passV) && (nick != nickV)) printf("No valida");
}
while ((nick != nickV) && (pass != passV));
printf("Aceptada");
return 0;
}
PD: Ademas debes adoptar la costumbre de que main te retorne un entero para garantizar de que el programa termino exitosamente mas bien esto lo debes hacer de manera obligatoria
Saludos ;D
Cita de: CCross en 5 Junio 2013, 21:29 PM
El problema radica en que scanf necesita la dirección de la variable a leer por lo cual
debes cambiar esto:
scanf("%d", pass); ---------> scanf("%d", &pass);
En ambos casos el codigo corregido
#include <stdio.h>
int main()
{
int nickV = 1024;
int nick;
int passV = 4567;
int pass;
do
{
printf("\n\n\n\n\t\t\t\tNICK:");
scanf("%d", &nick);
printf("\n\t\t\t\tPASS:");
scanf("%d", &pass);
if ((pass != passV) && (nick != nickV)) printf("No valida");
}
while ((nick != nickV) && (pass != passV));
printf("Aceptada");
return 0;
}
Saludos ;D
Muchas gracias!
Ahora me ha surgido otro problema, cuando pongo el nick bien y la pass mal o al reves, me sale "No ValidaAceptada" ¿Cómo lo soluciono?
Saludos!
Buenas!!
Cambia la condición de while y del if por or
while ((nick != nickV) || (pass != passV));
Saludos
Cita de: satu en 5 Junio 2013, 21:50 PM
Buenas!!
Cambia la condición de while y del if por or
while ((nick != nickV) || (pass != passV));
Saludos
Era eso, muchas gracias!