[help] Acertar un numero

Iniciado por sora_ori, 23 Enero 2014, 15:48 PM

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

sora_ori

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 :)

amchacon

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.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

sora_ori

Gracias por responder!

Me lo podrías decir sin funciones?

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

dato000

#3

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



sora_ori

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


dato000

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ú.



amchacon

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;
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

dato000

ah fuck!! cierto no cai en cuenta con eso...  :P :P



sora_ori

Ahí le has dado "amchacon"  ;-) ;-) ;-) ;-)

Muchas gracias