Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: sora_ori en 23 Enero 2014, 15:48 pm



Título: [help] Acertar un numero
Publicado por: sora_ori en 23 Enero 2014, 15:48 pm
Buenas,

Tengo un problema en un juego de acertar un número, el usuario primero introduce un vector, luego tiene que acertar un numero del vector, cuando llegas a 3 intentos salta un mensaje diciendo que se te han acabado los intentos.

El problema que tengo es que si acierto si me sale correcto pero hago más de 3 intentos incorrectos y no me sale el aviso.


Código
  1. case 4:
  2.                      system("cls");
  3.                      if (error != 3) {
  4.                                printf("\tJUEGO DE ACERTAR UN NUMERO");
  5.                                printf("\n------------------------------\n");
  6.                                printf("Escribe un numero: ");
  7.                                scanf("%d", &num);
  8.  
  9.                                for (i=0; i<5; i++){
  10.                                    if (num == vector[i]) encontrado=1;
  11.                                }
  12.                                for (i=0; i<5; i++){
  13.                                    if (num != vector[i]) error=error+1;
  14.                                }
  15.  
  16.                                if (encontrado == 1){
  17.                                               printf("ENHORABUENA! Has acertado un numero!");
  18.                                               getch();
  19.                                }// fin if
  20.                      }//fin if
  21.                      else {
  22.                           printf("\nYa has hecho tres intentos");
  23.                           getch();
  24.                           }
  25.                      break;

A ver si me pueden echar un cable, gracias :)


Título: Re: [help] Acertar un numero
Publicado por: amchacon en 23 Enero 2014, 16:18 pm
Te has liado un poco.

Hazte una función que te diga si un numero se encuentra en un vector o no:

Código
  1. char seEncuentra(int vector[],int num)
  2. {
  3.    for (i=0; i<5; i++){
  4.        if (num == vector[i]) return 1;
  5.    }
  6.  
  7.    return 0;
  8. }

Y repite la entrada de datos (el scanf) mientras que esta funcion de 1 o el número de errores sea distinto de 3. Una vez fuera del bucle tendrás que mirar con un if que acción provocó la salida del bucle.


Título: Re: [help] Acertar un numero
Publicado por: sora_ori en 23 Enero 2014, 16:20 pm
Gracias por responder!

Me lo podrías decir sin funciones?

Porque de momento en este tema no lo estudio, gracias =)


Título: Re: [help] Acertar un numero
Publicado por: dato000 en 23 Enero 2014, 16:53 pm
Código
  1. case 4:
  2.    system("cls");
  3.    while (error <= 3)  //suponiendo que error = 1 cuando declaras la variable
  4.    {
  5.        printf("\tJUEGO DE ACERTAR UN NUMERO");
  6.        printf("\n------------------------------\n");
  7.        printf("Escribe un numero: ");
  8.        scanf("%d", &num);
  9.  
  10.        for (i=0; i<5; i++)
  11.        {
  12.            if (num == vector[i])
  13.                encontrado=1;
  14.        }
  15.  
  16.        for (i=0; i<5; i++)
  17.        {
  18.            if (num != vector[i])
  19.                error=error+1;
  20.        }
  21.  
  22.        if (encontrado == 1)
  23.        {
  24.            printf("ENHORABUENA! Has acertado un numero!");
  25.            getch();  // nunca me termino de gustar esta función
  26.            break;
  27.        }// fin if
  28.  
  29.        if (error == 3)
  30.        {
  31.            printf("\nYa has hecho tres intentos");
  32.            getch();  // nuevamente, apesta... yo usaria getchar() pero da igual
  33.            break;
  34.        } // fin if
  35.  
  36.    }//fin while
  37.    break;
  38.  

Bueno, es una sugerencia.

slds


Título: Re: [help] Acertar un numero
Publicado por: sora_ori en 23 Enero 2014, 17:13 pm
Gracias por la ayuda "dato000", pero cuando hago un fallo me vuelve al menú (es normal) pero cuando quiero volver a entrar a la opción del menú ya no me entra.


Saludos



Título: Re: [help] Acertar un numero
Publicado por: dato000 en 23 Enero 2014, 17:43 pm
ni idea, eso ya seria la parte del main, puede que el valor de la opción del menú nunca cambia en el switch que realizas, por lo que necesitas un while o un do-while para hacer una correcta comprobación de la opción del menú.


Título: Re: [help] Acertar un numero
Publicado por: amchacon en 23 Enero 2014, 19:34 pm
ni idea, eso ya seria la parte del main, puede que el valor de la opción del menú nunca cambia en el switch que realizas, por lo que necesitas un while o un do-while para hacer una correcta comprobación de la opción del menú.
No, lo que pasa esque tienes que reinicializar la variable error a cero.

Gracias por responder!

Me lo podrías decir sin funciones?

Porque de momento en este tema no lo estudio, gracias =)
Código
  1. while (error <= 3)
  2.   {
  3.       printf("\tJUEGO DE ACERTAR UN NUMERO");
  4.       printf("\n------------------------------\n");
  5.       printf("Escribe un numero: ");
  6.       scanf("%d", &num);
  7.  
  8.       for (i=0; i<5; i++)
  9.       {
  10.           if (num == vector[i])
  11.           {
  12.               encontrado=1;
  13.               i = 5;
  14.           }
  15.       }
  16.  
  17.       if (encontrado == 1)
  18.       {
  19.           printf("ENHORABUENA! Has acertado un numero!");
  20.           getch();  // nunca me termino de gustar esta función
  21.           break;
  22.       }// fin if
  23.  
  24.       error++;
  25.  
  26.       if (error == 3)
  27.       {
  28.           printf("\nYa has hecho tres intentos");
  29.           getch();  // nuevamente, apesta... yo usaria getchar() pero da igual
  30.           break;
  31.       } // fin if
  32.   }
  33.   error = 0;


Título: Re: [help] Acertar un numero
Publicado por: dato000 en 23 Enero 2014, 19:44 pm
ah fuck!! cierto no cai en cuenta con eso...  :P :P


Título: Re: [help] Acertar un numero
Publicado por: sora_ori en 23 Enero 2014, 21:39 pm
Ahí le has dado "amchacon"  ;-) ;-) ;-) ;-)

Muchas gracias