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 :)
Te has liado un poco.
Hazte una función que te diga si un numero se encuentra en un vector o no:
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.
Gracias por responder!
Me lo podrías decir sin funciones?
Porque de momento en este tema no lo estudio, gracias =)
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
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
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ú.
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 =)
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;
ah fuck!! cierto no cai en cuenta con eso... :P :P
Ahí le has dado "amchacon" ;-) ;-) ;-) ;-)
Muchas gracias