Foro de elhacker.net

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:
Código:
#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
  1. scanf("%d", pass); ---------> scanf("%d", &pass);

En ambos casos el codigo corregido

Código
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int nickV = 1024;
  5. int nick;
  6. int passV = 4567;
  7. int pass;
  8.  
  9. do
  10. {
  11. printf("\n\n\n\n\t\t\t\tNICK:");
  12. scanf("%d", &nick);
  13. printf("\n\t\t\t\tPASS:");
  14. scanf("%d", &pass);
  15. if ((pass != passV) && (nick != nickV)) printf("No valida");
  16. }
  17. while ((nick != nickV) && (pass != passV));
  18. printf("Aceptada");
  19.  
  20. return 0;
  21. }
  22.  

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
El problema radica en que scanf necesita la dirección de la variable a leer por lo cual
debes cambiar esto:

Código
  1. scanf("%d", pass); ---------> scanf("%d", &pass);

En ambos casos el codigo corregido

Código
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int nickV = 1024;
  5. int nick;
  6. int passV = 4567;
  7. int pass;
  8.  
  9. do
  10. {
  11. printf("\n\n\n\n\t\t\t\tNICK:");
  12. scanf("%d", &nick);
  13. printf("\n\t\t\t\tPASS:");
  14. scanf("%d", &pass);
  15. if ((pass != passV) && (nick != nickV)) printf("No valida");
  16. }
  17. while ((nick != nickV) && (pass != passV));
  18. printf("Aceptada");
  19.  
  20. return 0;
  21. }
  22.  

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
  1. while ((nick != nickV) || (pass != passV));

Saludos


Título: Re: Ayuda con ejercicio de C
Publicado por: K1LTR1X en 5 Junio 2013, 21:53 pm
Buenas!!

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

Código
  1. while ((nick != nickV) || (pass != passV));

Saludos

Era eso, muchas gracias!