Ayuda con ejercicio de C

Iniciado por K1LTR1X, 5 Junio 2013, 21:15 PM

0 Miembros y 1 Visitante están viendo este tema.

K1LTR1X

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

CCross

#1
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

K1LTR1X

#2
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!

satu

Buenas!!

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

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

Saludos
Breakbeat como forma de vida

K1LTR1X

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!