• Viernes 26 de Abril de 2024, 22:07

Autor Tema:  bingo en C, funcion comprobar  (Leído 7182 veces)

antlcn

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
bingo en C, funcion comprobar
« en: Miércoles 3 de Marzo de 2010, 18:09 »
0
hola, estoy haciendo un bingo en C cuyo enunciado es:
Realizar un programa para simular una sesión de Bingo en la que hay tres jugadores. Para ello, el programa debe incluir funciones para:
a)Generar los cartones. Cada cartón será una matriz aleatoria de 5 filas y 8 columnas, con valores enteros no repetidos de 0 a 99.
b)Sacar una bola del bombo. Para ello, se debe generar un número aleatorio de 0 a 99, teniendo cuidado de no generar dos veces el mismo valor.
c)Actualizar un cartón según la bola que ha salido y comprobar si el jugador ha obtenido línea (todos los valores de una línea del cartón) o bingo (todos los valores del cartón).
Para probar las funciones implementadas, simule la generación de bolas hasta que se acaben todas las bolas del bombo.

tengo todo, o eso creo pero no se exactamente como ir comprobando en con cada bola sacada si se ha hecho linea o bingo...

mi codigo:

Código: C
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4.  
  5. void gen_cartones(int *ptr);
  6. int revisarRepetido(int *ptr, int n, int lim);
  7. void mostrar(int M[][8]);
  8. int saca_bola(int *B, int i);
  9. int menu();
  10.  
  11. int
  12. main(void)
  13. {
  14.     int op=0, i=0, aux;
  15.     int C1[5][8], C2[5][8], C3[5][8], B[99];
  16.     op=menu();
  17.     while(op!=0){
  18.         switch (op){
  19.             case 1: printf("pulsa una tecla para generar el primer carton...");
  20.                     getchar();
  21.                     getchar();
  22.                     gen_cartones(C1[0]);
  23.                     printf("pulsa una tecla para generar el segundo carton...");
  24.                     getchar();
  25.                     gen_cartones(C2[0]);
  26.                     printf("pulsa una tecla para generar el tercer carton...");
  27.                     getchar();
  28.                     gen_cartones(C3[0]);
  29.                     break;
  30.             case 2: printf("npulsa una tecla para mostrar cartones...");
  31.                     getchar();
  32.                     printf("ncarton jugador 1: n");    
  33.                     mostrar(C1);
  34.                     printf("ncarton jugador 2: n");
  35.                     mostrar(C2);
  36.                     printf("ncarton jugador 3: n");
  37.                     mostrar(C3);
  38.                     break;
  39.             case 3: if(i==100)
  40.                         printf("nno se pueden sacar mas bolasn");
  41.                     else{
  42.                     aux=saca_bola(B, i);
  43.                     B[i]=aux;
  44.                     i++;
  45.                     }
  46.                     break;
  47.             default: printf("nError...introduce una opcion validan");
  48.                     break;
  49.         }
  50.         op=menu();
  51.     }    
  52.     return 0;
  53. }
  54.  
  55. void gen_cartones(int *ptr)
  56. {
  57.     int aux, i=0;
  58.     srand(time(0));
  59.     while(i<40)
  60.     {
  61.         aux=rand()%100;
  62.         if((revisarRepetido(ptr, aux, 40))==0)
  63.         {
  64.             *(ptr+i)=aux;
  65.             i++;
  66.         }
  67.     }
  68. }
  69.  
  70. int revisarRepetido(int *ptr, int n, int lim)
  71. {
  72.     int i, ret=0;
  73.     for(i=0;i<lim;i++)
  74.     {
  75.             if(*(ptr+i)==n)
  76.                 ret=1;
  77.     }
  78.     return ret;
  79. }
  80.  
  81. void mostrar(int M[][8])
  82. {
  83.     int i, j;
  84.     for(i=0;i<5;i++)
  85.     {
  86.         for(j=0;j<5;j++)
  87.         {
  88.             printf("t%d",M[i][j]);
  89.         }
  90.         printf("n");
  91.     }
  92. }
  93.  
  94. int saca_bola(int *B, int i)
  95. {
  96.     int aux=0;
  97.     srand(time(0));
  98.     aux=rand()%100;
  99.     while(revisarRepetido(B, aux, i)!=0){
  100.         aux=rand()%100;
  101.     }
  102.     return aux;
  103. }
  104.  
  105. int menu()
  106. {
  107.     int op=0;
  108.     printf("ntMENU:");
  109.     printf("nt1. Rellenar cartones.");
  110.     printf("nt2. Mostrar cartones.");
  111.     printf("nt3. Sacar bola.");
  112.     printf("nt0. Salir.");
  113.     printf("n-Seleccion: ");
  114.     scanf("%d",&op);
  115.     return op;
  116. }
  117.  

gracias de antemano!

locazopro

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: bingo en C, funcion comprobar
« Respuesta #1 en: Miércoles 3 de Marzo de 2010, 18:52 »
0
se me ocurre una solución rápida, que tengas también un array que contenga los datos de si los números en tu cartón fueron nombrados o no. Este sería un array del mismo tamaño que el cartón. Luego en cada pasada compruebas si es que por ejemplo hay algún valor false entonces no hay bingo.

Saludos.

antlcn

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: bingo en C, funcion comprobar
« Respuesta #2 en: Jueves 4 de Marzo de 2010, 10:05 »
0
no me queda todavia claro...no se exactamente como encajar eso

locazopro

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: bingo en C, funcion comprobar
« Respuesta #3 en: Domingo 7 de Marzo de 2010, 03:31 »
0
mira, básicamente lo que te digo es que por cada cartón tengas también por decirlo así un cartón para comprobar. Este debe ser un array exactamente igual al original, ahora por ejemplo a ese cartón lo llenas de ceros, lo que significa que no ha salido ningún número de la tómbola, si sale un número entonces cambias ese cero por un 1 y asi sucesivamente, si el cartón de comprobar posee únicamente unos entonces hay bingo, si es que hay algún cero entonces no hay bingo, no se si me entiendes ahora.

Saludos!