Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: santibarquero98 en 27 Abril 2015, 20:29 pm



Título: ¿Donde está el error?
Publicado por: santibarquero98 en 27 Abril 2015, 20:29 pm
Hola, me estoy iniciando en programar C y he llegado al DO...WHILE, se como funciona y lo entiendo pero he llegado a un ejercicio, he hecho el código pero no funciona bien el programa. Compilar compila, pero no funciona bien, os explico:

El ejercicio se trata de hacer que el usuario introduzca una contraseña y username correcto (establecidos ya en el programa), si no introduce el username correcto, le seguirá pidiendo hasta que lo introduzca correctamente y cuando lo haga bien, hará lo mismo con la contraseña hasta introducir ambas correctamente y saldrá un mensaje.

El problema viene cuando introduzco bien el nombre de usuario, ya que no continua con las siguientes ordenes, se queda colgado (sin embargo, si presiono CTROL+C para cerrar el programa si que aparece pero ese medio segundo mientras se cierra).

El código es:

Código:
#include <stdio.h>
int main()
{
int user=1024;
int pass=4567;
int useru,passu;

printf("Introduce tu nombre de usuario. \n");
scanf("%d",&useru);
do
{
if (useru!=user)
printf("Prueba de nuevo. \n");
scanf("%d",&useru);
}
while (useru!=user);

printf("Escribe tu contraseña. \n");
scanf("%d",&passu);
do
{
if (passu!=pass)
printf("Vuelve a intentarlo. \n");
scanf("%d",&passu);
}
while (passu!=pass);

printf("Accediendo al sistema... \n");
return 0;
}

Espero que me podáis ayudar para continuar con el curso con esto claro.

Estoy convencido de que será un error estúpido, como siempre pasa pero he analizado y analizado y no lo entiendo, pienso que falta algo después de WHILE o algo así para poder continuar pero no tengo ni idea...

P.D: No se si quizás haría falta menos código para lo que intento, si es así, por favor decidme como podría reducirlo ya que es un objetivo importante al programar pero tener en cuenta que no se mucho de C.


Título: Re: ¿Donde está el error?
Publicado por: pacosn1111 en 27 Abril 2015, 21:00 pm
Te faltan las llaves que engloba lo que está  dentro de los condicionales, no me explico como compila, te dejo el código corregido:

Código
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int user=1024;
  5. int pass=4567;
  6. int useru,passu;
  7.  
  8. printf("Introduce tu nombre de usuario. \n");
  9. scanf("%d",&useru);
  10. do
  11. {
  12. if (useru!=user)
  13.                        {
  14. printf("Prueba de nuevo. \n");
  15. scanf("%d",&useru);
  16.                        }
  17. }
  18. while (useru!=user);
  19.  
  20. printf("Escribe tu contraseña. \n");
  21. scanf("%d",&passu);
  22. do
  23. {
  24. if (passu!=pass)
  25.                      {
  26. printf("Vuelve a intentarlo. \n");
  27. scanf("%d",&passu);
  28.                      }
  29. }
  30. while (passu!=pass);
  31.  
  32. printf("Accediendo al sistema... \n");
  33. return 0;
  34. }
  35.  

PD: Estas llaves SOLO no son necesarias cuando el contenido del if es únicamente UNA instrucción, en el resto de casos como este si son obligatorias.