De hecho ahora me fijo que tampoco guardas los números en la lista (en el array)
A ver, limpiando un poco variables y líneas de código que no se usan, el programa podría quedar así:
#include <stdlib.h>
#include <stdio.h>
int main()
{
int k;
int t=40;
int total = 0;
int llave;
int lista2[100], numero;
printf("instrucciones: \n");
printf("El juego trata sobre encontrar todas las veces que se repite un mismo numero en una lista de 100 numeros entre 1 y 9, \n para comenzar a jugar, eliges un numero entre 1 y 9, la computadora generará una lista aleatoria de números y luego \n aparecera el numero que tienes que buscar, la lista y el numero a encontrar son diferentes dependiendo del numero que \n elijas al principio, tienes 40 segundos para encontrar todas las veces que se repite, cuando termines ingresas cuantos encontraste en el apartado al final, ganas si respondes antes de que termine el tiempo y pierdes si se te acaban los 40 segundos" );
printf("\n");
printf( "Para continuar introduce un numero entre 1 y 9: " );
scanf( "%d", &llave );
srand( llave );
for ( int i = 1; i <= 100; i++ )
{
lista2[i] = 1 + ( rand() % 9 ); //Guardamos numero generado en lista
printf("%10d", lista2[i]); //Lo mostramos en pantalla
if ( i % 5 == 0 )
{
printf( "\n" );
}
}
//Generamos numero a buscar
numero = 1 + ( rand() % 9 );
//Mostramos en pantalla
printf("Encuentra todos los %d \n", numero);
//Contamos cuantas veces se repite el numero en la lista
for(int i=0; i<100; i++)
{
if(numero==lista2[i])
total++;
}
printf("cuantos hay? \n");
scanf( "%u", &k );
if (k == total)
{
printf("correcto :)\n");
}
else
{
printf("NO ES CIERTO\n");
printf("Hay %d\n", total);
}
return 0;
}
Faltaría hacer lo que mencionas de que se repita hasta que introduzca una x.
Bueno, yo la verdad es que en lenguaje C no me manejo bien, nunca lo he estudiado, soy más de Java y C#.
He hecho un intento usando un bucle while, pidiendo el valor de la llave como un "char".
Si es una 'x' no se ejecuta el programa, de lo contrario, generamos números random con él (internamente, un char viene a ser lo mismo que un int).
Sin embargo, no funciona bien, solo deja introducir el valor de llave la primera vez, las siguientes iteraciones ya no pide el valor.
Da igual si limpio el buffer con fflush(), sigue fallando.
A ver si alguien que sepa más de C nos dice cómo solucionarlo:
#include <stdlib.h>
#include <stdio.h>
int main()
{
int k;
int t = 40;
int total = 0;
char llave = ' ';
int lista2[100], numero;
while (llave != 'x')
{
printf("instrucciones: \n");
printf("El juego trata sobre encontrar todas las veces que se repite un mismo numero en una lista de 100 numeros entre 1 y 9, \n para comenzar a jugar, eliges un numero entre 1 y 9, la computadora generará una lista aleatoria de números y luego \n aparecera el numero que tienes que buscar, la lista y el numero a encontrar son diferentes dependiendo del numero que \n elijas al principio, tienes 40 segundos para encontrar todas las veces que se repite, cuando termines ingresas cuantos encontraste en el apartado al final, ganas si respondes antes de que termine el tiempo y pierdes si se te acaban los 40 segundos");
printf("\n");
printf("Para continuar introduce un numero entre 1 y 9(x para salir): ");
fflush(stdin);
scanf("%c", &llave);
if (llave != 'x')
{
srand(llave);
for (int i = 1; i <= 100; i++)
{
lista2[i] = 1 + (rand() % 9); //Guardamos numero generado en lista
printf("%10d", lista2[i]); //Lo mostramos en pantalla
if (i % 5 == 0)
{
printf("\n");
}
}
//Generamos numero a buscar
numero = 1 + (rand() % 9);
//Mostramos en pantalla
printf("Encuentra todos los %d \n", numero);
//Contamos cuantas veces se repite el numero en la lista
for (int i = 0; i < 100; i++)
{
if (numero == lista2[i])
total++;
}
printf("cuantos hay? \n");
scanf("%d", &k);
if (k == total)
{
printf("correcto :)\n");
}
else
{
printf("NO ES CIERTO\n");
printf("Hay %d\n", total);
}
system("pause");
}
}
return 0;
}