Test Foro de elhacker.net SMF 2.1

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.


case 4:
                      system("cls");
                      if (error != 3) {
                                printf("\tJUEGO DE ACERTAR UN NUMERO");
                                printf("\n------------------------------\n");
                                printf("Escribe un numero: ");
                                scanf("%d", &num);
                               
                                for (i=0; i<5; i++){
                                    if (num == vector[i]) encontrado=1;
                                }
                                for (i=0; i<5; i++){
                                    if (num != vector[i]) error=error+1;
                                }
                               
                                if (encontrado == 1){
                                               printf("ENHORABUENA! Has acertado un numero!");
                                               getch();
                                }// fin if
                      }//fin if
                      else {
                           printf("\nYa has hecho tres intentos");
                           getch();
                           }
                      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 (cpp) [Seleccionar]
char seEncuentra(int vector[],int num)
{
    for (i=0; i<5; i++){
        if (num == vector[i]) return 1;
    }

    return 0;
}


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

case 4:
    system("cls");
    while (error <= 3)  //suponiendo que error = 1 cuando declaras la variable
    {
        printf("\tJUEGO DE ACERTAR UN NUMERO");
        printf("\n------------------------------\n");
        printf("Escribe un numero: ");
        scanf("%d", &num);
       
        for (i=0; i<5; i++)
        {
            if (num == vector[i])
                encontrado=1;
        }
       
        for (i=0; i<5; i++)
        {
            if (num != vector[i])
                error=error+1;
        }
       
        if (encontrado == 1)
        {
            printf("ENHORABUENA! Has acertado un numero!");
            getch();  // nunca me termino de gustar esta función
            break;
        }// fin if
       
        if (error == 3)
        {
            printf("\nYa has hecho tres intentos");
            getch();  // nuevamente, apesta... yo usaria getchar() pero da igual
            break;
        } // fin if
       
    }//fin while
    break;


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
Cita de: 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ú.
No, lo que pasa esque tienes que reinicializar la variable error a cero.

Cita de: 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 =)
Código (cpp) [Seleccionar]
while (error <= 3)
  {
      printf("\tJUEGO DE ACERTAR UN NUMERO");
      printf("\n------------------------------\n");
      printf("Escribe un numero: ");
      scanf("%d", &num);

      for (i=0; i<5; i++)
      {
          if (num == vector[i])
          {
              encontrado=1;
              i = 5;
          }
      }

      if (encontrado == 1)
      {
          printf("ENHORABUENA! Has acertado un numero!");
          getch();  // nunca me termino de gustar esta función
          break;
      }// fin if

      error++;

      if (error == 3)
      {
          printf("\nYa has hecho tres intentos");
          getch();  // nuevamente, apesta... yo usaria getchar() pero da igual
          break;
      } // fin if
  }
   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