Como asignatura del colegio tuve que hacer un juego, en el que la computadora eligiera un numero aleatorio entre un rango de limites que el usuario introduzca; y solo deja al usuario intentar adivinar el numero de veces que el diga...
Cada vez que introduces el valor para ver si acertaste, te debe decir si es correcto o incorrecto, y te debe decir el numero de intento en el que estás y cuantos intentos te quedan.
Al final te debe decir todos los intentos que escribiste, y el numero que la computadora eligió aleatoriamente...
En fín... tengo problemas, debido a que el programa no imprime bien el numero de intentos que quedan, y no aparecen todos los intentos hasta el final, y no se porque... ¿Alguien me podría auxiliar?
El programa compila y corre bien, solo es ese el problema... los intentos.... que los hice a través de un arreglo...
El código completo es el siguiente:
#include<stdio.h>
void MuestraDatos();
void MuestraObjetivos();
void PideDatos(int*NumIntentos, int*NumLimMaximo, int*NumLimMinimo);
void NumAzar(int NumLimMaximo, int NumLimMinimo, int*NumRand);
void Juego(int NumRand, int*NumPuesto, int NumIntentos, int NumLimiteMaximo, int NumLimiteMinimo, int Arreglo[200], int*a, int*i);
void Imprime(int NumRand, int NumIntentos, int NumPuesto, int Arreglo[200], int a, int i);
/*-------------------------------------------------------------------------------------*/
void main(void)
{
int Rand, Puesto, Intentos, LimMaximo, LimMinimo, Lista[200], a, i;
MuestraDatos();
MuestraObjetivos();
PideDatos(&Intentos, &LimMaximo, &LimMinimo);
NumAzar(LimMaximo, LimMinimo, &Rand);
Juego(Rand, &Puesto, Intentos, LimMaximo, LimMinimo, Lista, &a, &i);
Imprime(Rand, Intentos, Puesto, Lista, a, i);
}
/*-------------------------------------------------------------------------------------*/
void MuestraDatos()
{
printf("El Juego que está a punto de disfrutar, fue diseñado por Gortes Tarets,\n");
printf("estudiante de Ingeniería Industrial en la UNAM.\n");
printf("Press Enter to Continue\n");
while(getchar()!='\n');
}
/*-------------------------------------------------------------------------------------*/
void MuestraObjetivos()
{
printf("\n\n");
printf("----------------ADIVINA EL NUMERO------------------\n");
printf("Los Objetivos del juego son los siguientes:\n\n");
printf("1. Introducirás los limites dentro de los cuales estará el numero a adivinar\n");
printf("2. Introducirás el numero de intentos en el que crees descubrirlo\n");
printf("3. Yo generaré el número, y tu lo intentarás descubrir en tu numero de intentos\n");
printf("4. El objetivo principal del juego es que ENCUENTRES EL NÚMERO!\n");
printf("Press Enter to Continue\n");
while(getchar()!='\n');
}
/*-------------------------------------------------------------------------------------*/
void PideDatos(int*NumIntentos, int*NumLimMaximo, int*NumLimMinimo)
{
printf("\n\n");
printf("Introduce el Limite máximo para los valores\n");
scanf("%d", NumLimMaximo);
if(*NumLimMaximo==0)
{
do
{
printf("Obviamente este valor no puede ser 0. Introduce un nuevo valor:\n");
scanf("%d", NumLimMaximo);
}
while(*NumLimMaximo==0);
}
printf("Introduce el Limite mínimo para los valores\n");
scanf("%d", NumLimMinimo);
if(*NumLimMinimo>=*NumLimMaximo)
{
do
{
printf("Obviamente este valor no puede ser mayor al limite maximo. Introduce un nuevo valor:\n");
scanf("%d", NumLimMinimo);
}
while(*NumLimMinimo==0);
}
printf("En cuantos intentos crees encontrar el número\n");
scanf("%d", NumIntentos);
if(*NumIntentos==0)
{
do
{
printf("Obviamente este valor no puede ser 0. Introduce un nuevo valor:\n");
scanf("%d", NumIntentos);
}
while(*NumIntentos==0);
}
}
/*-------------------------------------------------------------------------------------*/
void NumAzar(int NumLimMaximo, int NumLimMinimo, int*NumRand)
{
int NumLimiteTotal, rand();
NumLimiteTotal=(NumLimMaximo-NumLimMinimo);
*NumRand=rand()%(NumLimiteTotal)+(NumLimMinimo);
}
/*-------------------------------------------------------------------------------------*/
void Juego(int NumRand, int*NumPuesto, int NumIntentos, int NumLimiteMaximo, int NumLimiteMinimo, int Arreglo[200], int*a, int*i)
{
*a=0;
*i=NumIntentos;
printf("Estoy listo para jugar...\n\n");
do
{
printf("Introduce tu adivinación:\n");
scanf("%d", NumPuesto);
Arreglo[*a]=*NumPuesto;
*a++;
if((*NumPuesto<NumLimiteMinimo)||(*NumPuesto>NumLimiteMaximo))
{
printf("Los valores están fuera de Rango... intenta de nuevo");
i--;
printf("Quedan %d intentos\n", *i);
}
else if(*NumPuesto==NumRand)
{
printf("Felicidades, Le has ganado a una computadora... Respekt+\n");
i=i;
printf("Lo lograste en %d intentos\n\n\n", *a);
}
else if(*NumPuesto!=NumRand)
{
printf("Uy, no!, ese no era el número, intentalo de nuevo... Respect-\n");
i--;
printf("Quedan %d intentos\n", *i);
}
}
while(*i!=NumIntentos);
}
/*-------------------------------------------------------------------------------------*/
void Imprime(int NumRand, int NumIntentos, int NumPuesto, int Arreglo[200], int a, int i)
{
int contador=0;
if((NumPuesto)==(NumRand))
{
printf("-------------------RESULTADOS-------------------\n");
printf("Lo lograste resolver en %d intentos\n", a);
printf("El número correcto era: %d\n", NumRand);
printf("Tus intentos fueron:\n");
for(contador=0; contador=a; contador+1)
{
printf("Intento #%d: %d\n\n", contador++, Arreglo[contador]);
}
printf("Muchas Gracias por jugar mi juego");
}
else if(NumPuesto!=NumRand)
{
printf("-------------------RESULTADOS-------------------\n");
printf("No lograste encontrar el número en %d intentos, sos un looser!\n", a);
printf("El número correcto era: %d\n", NumRand);
printf("Tus intentos fueron:\n");
for(contador=0; contador=a; contador++)
{
printf("Intento #%d: %d\n\n", contador++, Arreglo[contador]);
}
printf("Muchas Gracias por jugar mi juego");
}
}
Cada vez que introduces el valor para ver si acertaste, te debe decir si es correcto o incorrecto, y te debe decir el numero de intento en el que estás y cuantos intentos te quedan.
Al final te debe decir todos los intentos que escribiste, y el numero que la computadora eligió aleatoriamente...
En fín... tengo problemas, debido a que el programa no imprime bien el numero de intentos que quedan, y no aparecen todos los intentos hasta el final, y no se porque... ¿Alguien me podría auxiliar?
El programa compila y corre bien, solo es ese el problema... los intentos.... que los hice a través de un arreglo...
El código completo es el siguiente:
#include<stdio.h>
void MuestraDatos();
void MuestraObjetivos();
void PideDatos(int*NumIntentos, int*NumLimMaximo, int*NumLimMinimo);
void NumAzar(int NumLimMaximo, int NumLimMinimo, int*NumRand);
void Juego(int NumRand, int*NumPuesto, int NumIntentos, int NumLimiteMaximo, int NumLimiteMinimo, int Arreglo[200], int*a, int*i);
void Imprime(int NumRand, int NumIntentos, int NumPuesto, int Arreglo[200], int a, int i);
/*-------------------------------------------------------------------------------------*/
void main(void)
{
int Rand, Puesto, Intentos, LimMaximo, LimMinimo, Lista[200], a, i;
MuestraDatos();
MuestraObjetivos();
PideDatos(&Intentos, &LimMaximo, &LimMinimo);
NumAzar(LimMaximo, LimMinimo, &Rand);
Juego(Rand, &Puesto, Intentos, LimMaximo, LimMinimo, Lista, &a, &i);
Imprime(Rand, Intentos, Puesto, Lista, a, i);
}
/*-------------------------------------------------------------------------------------*/
void MuestraDatos()
{
printf("El Juego que está a punto de disfrutar, fue diseñado por Gortes Tarets,\n");
printf("estudiante de Ingeniería Industrial en la UNAM.\n");
printf("Press Enter to Continue\n");
while(getchar()!='\n');
}
/*-------------------------------------------------------------------------------------*/
void MuestraObjetivos()
{
printf("\n\n");
printf("----------------ADIVINA EL NUMERO------------------\n");
printf("Los Objetivos del juego son los siguientes:\n\n");
printf("1. Introducirás los limites dentro de los cuales estará el numero a adivinar\n");
printf("2. Introducirás el numero de intentos en el que crees descubrirlo\n");
printf("3. Yo generaré el número, y tu lo intentarás descubrir en tu numero de intentos\n");
printf("4. El objetivo principal del juego es que ENCUENTRES EL NÚMERO!\n");
printf("Press Enter to Continue\n");
while(getchar()!='\n');
}
/*-------------------------------------------------------------------------------------*/
void PideDatos(int*NumIntentos, int*NumLimMaximo, int*NumLimMinimo)
{
printf("\n\n");
printf("Introduce el Limite máximo para los valores\n");
scanf("%d", NumLimMaximo);
if(*NumLimMaximo==0)
{
do
{
printf("Obviamente este valor no puede ser 0. Introduce un nuevo valor:\n");
scanf("%d", NumLimMaximo);
}
while(*NumLimMaximo==0);
}
printf("Introduce el Limite mínimo para los valores\n");
scanf("%d", NumLimMinimo);
if(*NumLimMinimo>=*NumLimMaximo)
{
do
{
printf("Obviamente este valor no puede ser mayor al limite maximo. Introduce un nuevo valor:\n");
scanf("%d", NumLimMinimo);
}
while(*NumLimMinimo==0);
}
printf("En cuantos intentos crees encontrar el número\n");
scanf("%d", NumIntentos);
if(*NumIntentos==0)
{
do
{
printf("Obviamente este valor no puede ser 0. Introduce un nuevo valor:\n");
scanf("%d", NumIntentos);
}
while(*NumIntentos==0);
}
}
/*-------------------------------------------------------------------------------------*/
void NumAzar(int NumLimMaximo, int NumLimMinimo, int*NumRand)
{
int NumLimiteTotal, rand();
NumLimiteTotal=(NumLimMaximo-NumLimMinimo);
*NumRand=rand()%(NumLimiteTotal)+(NumLimMinimo);
}
/*-------------------------------------------------------------------------------------*/
void Juego(int NumRand, int*NumPuesto, int NumIntentos, int NumLimiteMaximo, int NumLimiteMinimo, int Arreglo[200], int*a, int*i)
{
*a=0;
*i=NumIntentos;
printf("Estoy listo para jugar...\n\n");
do
{
printf("Introduce tu adivinación:\n");
scanf("%d", NumPuesto);
Arreglo[*a]=*NumPuesto;
*a++;
if((*NumPuesto<NumLimiteMinimo)||(*NumPuesto>NumLimiteMaximo))
{
printf("Los valores están fuera de Rango... intenta de nuevo");
i--;
printf("Quedan %d intentos\n", *i);
}
else if(*NumPuesto==NumRand)
{
printf("Felicidades, Le has ganado a una computadora... Respekt+\n");
i=i;
printf("Lo lograste en %d intentos\n\n\n", *a);
}
else if(*NumPuesto!=NumRand)
{
printf("Uy, no!, ese no era el número, intentalo de nuevo... Respect-\n");
i--;
printf("Quedan %d intentos\n", *i);
}
}
while(*i!=NumIntentos);
}
/*-------------------------------------------------------------------------------------*/
void Imprime(int NumRand, int NumIntentos, int NumPuesto, int Arreglo[200], int a, int i)
{
int contador=0;
if((NumPuesto)==(NumRand))
{
printf("-------------------RESULTADOS-------------------\n");
printf("Lo lograste resolver en %d intentos\n", a);
printf("El número correcto era: %d\n", NumRand);
printf("Tus intentos fueron:\n");
for(contador=0; contador=a; contador+1)
{
printf("Intento #%d: %d\n\n", contador++, Arreglo[contador]);
}
printf("Muchas Gracias por jugar mi juego");
}
else if(NumPuesto!=NumRand)
{
printf("-------------------RESULTADOS-------------------\n");
printf("No lograste encontrar el número en %d intentos, sos un looser!\n", a);
printf("El número correcto era: %d\n", NumRand);
printf("Tus intentos fueron:\n");
for(contador=0; contador=a; contador++)
{
printf("Intento #%d: %d\n\n", contador++, Arreglo[contador]);
}
printf("Muchas Gracias por jugar mi juego");
}
}