Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: K1LTR1X en 5 Junio 2013, 21:15 PM

Título: Ayuda con ejercicio de C
Publicado por: K1LTR1X en 5 Junio 2013, 21:15 PM
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
Título: Re: Ayuda con ejercicio de C
Publicado por: 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:

Código (cpp) [Seleccionar]
scanf("%d", pass); ---------> scanf("%d", &pass);

En ambos casos el codigo corregido

Código (cpp) [Seleccionar]
#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
Título: Re: Ayuda con ejercicio de C
Publicado por: K1LTR1X en 5 Junio 2013, 21:39 PM
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:

Código (cpp) [Seleccionar]
scanf("%d", pass); ---------> scanf("%d", &pass);

En ambos casos el codigo corregido

Código (cpp) [Seleccionar]
#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!
Título: Re: Ayuda con ejercicio de C
Publicado por: satu en 5 Junio 2013, 21:50 PM
Buenas!!

Cambia la condición de while y del if por or

Código (cpp) [Seleccionar]
while ((nick != nickV) || (pass != passV));

Saludos
Título: Re: Ayuda con ejercicio de C
Publicado por: K1LTR1X en 5 Junio 2013, 21:53 PM
Cita de: satu en  5 Junio 2013, 21:50 PM
Buenas!!

Cambia la condición de while y del if por or

Código (cpp) [Seleccionar]
while ((nick != nickV) || (pass != passV));

Saludos

Era eso, muchas gracias!