elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  EJERCICIO BINGO EN C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: EJERCICIO BINGO EN C  (Leído 3,073 veces)
inmajimenez

Desconectado Desconectado

Mensajes: 4


Ver Perfil
EJERCICIO BINGO EN C
« en: 3 Noviembre 2018, 12:26 pm »

Hola a todxs, estoy haciendo un ejercicicio de programacion del bingo en c y el ejercicio es el siguiente:
juegan dos jugarores a la vez, y tienen un carton cada uno. Cada carton tiene 3 filas y 5 valores por fila. los numeros estan en el rango [1,90]. tambien se generara una bola de rango [1,90], nunca repetidos.

1-al iniciar partida se reparten los cartones generados aleatoriamente.

2-sacar bola-> el programa genreara aleatoriamente un numero [1,90] que no haya salido a lo largo de la partida. una vez generado el numero se comprobara si ha habido linea o bingo, si hubo un empate o nada en caso contrario.
la linea se cantara una vez. el bingo consiste en haber acertado todos los numeros del carton.

3- imrpimir cartones, el programa mostrara por pantalla los booletos de cada jugador formateados, indicando con una X los numeros ya elimandos. por ejemplo:
13 X 56 4 5
12 X X 4 57
15 X 72 X 7
-----------------------
EL PROGRAMA QUE TENGO ES EL SIGUIENTE, PERO ANTES OS DIGO QUE EL PROBLEMA LE TENGO A LA HORA DE SACAR LAS X YA QUE TENGO CASI TODO METIDO EN DIFERENTES FUNCIONES Y NO SE COMO SE HARIA.
-----------------------------------------------------------------


#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#define FILAS_CARTON 3
#define NUMEROS_FILA 5
#define MAX_BOLAS 90
int carton_1[FILAS_CARTON][NUMEROS_FILA];
int carton_2[FILAS_CARTON][NUMEROS_FILA];
int bolas_bingo[MAX_BOLAS];
int elegir_opcion();
void imprimir_menu();
void rellenar_carton();
void rellenar_carton2();
void imprimir_carton();
void imprimir_carton2();
bool esta_repetido(int numero);
void generar_bola();

int main()

{
 char* nom1,nom2;
 int opcion;





 printf("\n nombre jugador 1");
 scanf("%s",&nom1);
 printf("\n nombre jugador 2");
 scanf("%s",&nom2);
 opcion=1;

 while(opcion!=0)  {
        imprimir_menu();
        opcion=elegir_opcion();

    switch (opcion)

    {
        case 1:
            rellenar_carton();
            rellenar_carton2();

            break;

        case 2:
           generar_bola();
            break;

        case 3:

            imprimir_carton2();
            imprimir_carton();


            break;

        case 4:
            break;


    }

}






    return 0;
}


void imprimir_menu(){
    printf("\n--------JUEGO DEL BINGO-----");
    printf("\n\t 1. generar cartones");
    printf("\n\t 2. generar bola");
    printf("\n\t 3. imrpimir cartones");
    printf("\n\t 0. salir de la aplicacion");
    printf("\n----------------------------");




}
int elegir_opcion(){
    int opcion;
    printf("\n elegir opcion");
    scanf("%d",&opcion);

    return opcion;
}

void rellenar_carton(){
    int i,j,num;
    srand(getpid());
    for(i=0;i<FILAS_CARTON;i++){

        for(j=0;j<NUMEROS_FILA;j++){

             num=rand() % (90-1+1)+1;
             if (!esta_repetido(num)){
                 carton_1[j]=num;
             } else {
                j--;
            }


        }

    }


}

void imprimir_carton(){

    int i,j;
    for(i=0;i<FILAS_CARTON;i++){

        for(j=0;j<NUMEROS_FILA;j++){
             printf(" %d",carton_1[j]);
        }

                printf("\n");
        }

        printf("\n");
    }



bool esta_repetido(int numero){
     int i,j;

     for(i=0;i<FILAS_CARTON;i++){
        for(j=0;j<NUMEROS_FILA;j++){
            if(carton_1[j]==numero){
                return true;
            }


        }
     }
    return false;
}

void generar_bola(){
int bola;
    srand(getpid());

    bola=rand() % (90-1+1)+1;
    printf("%d",bola);
}
void rellenar_carton2(){
    int i,j,num;
    srand(getpid());
    for(i=0;i<FILAS_CARTON;i++){

        for(j=0;j<NUMEROS_FILA;j++){

             num=rand() % (90-1+1)+1;
             if (!esta_repetido(num)){
                 carton_2[j]=num;
             } else {
                j--;
            }


        }

        }

    }



void imprimir_carton2(){
    int i,j;
     for(i=0;i<FILAS_CARTON;i++){

        for(j=0;j<NUMEROS_FILA;j++){
             printf(" %d",carton_2[j]);
        }

        printf("\n");
    }


}


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.590


🏴 Libertad!!!!!


Ver Perfil WWW
Re: EJERCICIO BINGO EN C
« Respuesta #1 en: 4 Noviembre 2018, 04:37 am »

Hace tiempo publique un video al respecto.



En línea

Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW
inmajimenez

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: EJERCICIO BINGO EN C
« Respuesta #2 en: 4 Noviembre 2018, 18:04 pm »

ya, si su video le he visto pero en mi caso, cuando sale una bola, si el numero de la bola coincide con un numero del carton, en el carton tiene que imprimir una X en el lugar del numero.
En línea

PalitroqueZ


Desconectado Desconectado

Mensajes: 948



Ver Perfil
Re: EJERCICIO BINGO EN C
« Respuesta #3 en: 4 Noviembre 2018, 18:21 pm »

pregunta:

¿dónde está la función que evita que al volver a generar un numero aleatorio, no sea un número repetido?


En línea

"La Economía planificada lleva de un modo gradual pero seguro a la economía dirigida, a la economía autoritaria y al totalitarismo" Ludwig Erhard
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.590


🏴 Libertad!!!!!


Ver Perfil WWW
Re: EJERCICIO BINGO EN C
« Respuesta #4 en: 4 Noviembre 2018, 23:42 pm »

pregunta:

¿dónde está la función que evita que al volver a generar un numero aleatorio, no sea un número repetido?


Segun veo su codigo la funcion se llama "esta_repetido"

Pero veo que bastante INEFICIENTE esa funcion, recorre todo el arreglo cada vez que va a validar un numero.

ya, si su video le he visto pero en mi caso, cuando sale una bola, si el numero de la bola coincide con un numero del carton, en el carton tiene que imprimir una X en el lugar del numero.

Segun recuerdo en uno de los 2 videos hablo un poco de eso, basicamentre se trata de tener 2 o tal vez mas arreglos auxiliares

Uno para los numero que estan en el carton.

Uno para marcar los que numeros que ya salieron y entonces cuando hacemos el for para imprimir los numeros, Validamos primero si el numero Indice actual ya salio si ya salio imprimimos X y si no ha salido imprimimos el numero como tal.

Saludos
En línea

Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.590


🏴 Libertad!!!!!


Ver Perfil WWW
Re: EJERCICIO BINGO EN C
« Respuesta #5 en: 5 Noviembre 2018, 01:52 am »

Descargar codigo en Ejemplo de Bingo marcando con X el carton - Programación Trabajos Escolares

Te escribi un pequeño ejemplo que hace lo que pides, la unica diferencia es que aqui manejo el carton como un Arreglo LINEAL.

Salida de Ejemplo:

Código:
C:\codigos>bingo.exe
Llenamos carton
El numero 34, se encuentra en el carton en la posicion 3
El numero 89, se encuentra en el carton en la posicion 9
El numero 65, se encuentra en el carton en la posicion 11
El numero 52, se encuentra en el carton en la posicion 5
El numero 14, se encuentra en el carton en la posicion 12
El numero 88, se encuentra en el carton en la posicion 10
El numero 11, se encuentra en el carton en la posicion 13
El numero 38, se encuentra en el carton en la posicion 6
40      35      1       X       50
X       X       85      54      X
X       X       X       X       73


Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<time.h>
  5.  
  6.  
  7. int main() {
  8. int carton[15];
  9.  
  10. int numeros_bingo[30];
  11.  
  12. int no_duplicados[90] = {0};
  13. int esta_en_carton[90] = {0};
  14. int indice_en_carton[90] = {0};
  15. int marcar_con_X[90] = {0};
  16.  
  17. srand(time(NULL));
  18.  
  19. int i = 0,j,k,r;
  20. printf("Llenamos carton\n");
  21. i = 0;
  22. do {
  23. r = rand() % 90;
  24. if(no_duplicados[r] == 0){
  25. carton[i] = r;
  26. esta_en_carton[r] = 1; //Bandera en la posicion del numero que si esta en el carton seteada a 1
  27. indice_en_carton[r] = i++; //Guardamos en la posicion del numero que si este en el carton el valor del indice donde este mismo numero se encuentra en el carton
  28. }
  29. }while(i < 15);
  30.  
  31. memset(no_duplicados,0,sizeof(int)*90);
  32.  
  33. //Sacamos 30 numeros;
  34. i = 0;
  35. while(i < 30) {
  36. do {
  37. r = rand() % 90;
  38. }while(no_duplicados[r] == 1);
  39. no_duplicados[r] = 1;
  40. numeros_bingo[i] = r;
  41. i++;
  42. }
  43.  
  44. //Ahora ya que tenemos los 30 numeros del bingo evaluamos el carton
  45. i = 0;
  46. while(i < 30) {
  47. if(esta_en_carton[numeros_bingo[i]] == 1) { //Este if nos dice que numeros del bingo estan actualmente en el carton
  48. marcar_con_X[numeros_bingo[i]] = 1;
  49. printf("El numero %i, se encuentra en el carton en la posicion %i\n",numeros_bingo[i],indice_en_carton[numeros_bingo[i]]);
  50.  
  51. }
  52. i++;
  53. }
  54.  
  55. //Ahora imprimimos el carton
  56. i = 0;
  57. k = 0;
  58. while(i < 3) {
  59. j = 0;
  60. while(j < 5) {
  61. if(marcar_con_X[carton[k]] == 1){
  62. printf("X\t");
  63. }
  64. else {
  65. printf("%i\t",carton[k]);
  66. }
  67. k++;
  68. j++;
  69. }
  70. printf("\n");
  71. i++;
  72. }
  73. }
  74.  
  75.  
« Última modificación: 5 Noviembre 2018, 02:26 am por AlbertoBSD » En línea

Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW
inmajimenez

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: EJERCICIO BINGO EN C
« Respuesta #6 en: 6 Noviembre 2018, 12:33 pm »

muchas gracias!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Programar un bingo
Programación Visual Basic
a_rodriguez24_07 2 3,085 Último mensaje 2 Octubre 2008, 00:41 am
por a_rodriguez24_07
Juego del bingo
Ejercicios
hansviron 0 3,128 Último mensaje 26 Junio 2010, 18:14 pm
por hansviron
Bingo WEB
.NET (C#, VB.NET, ASP)
WRGuide 3 2,067 Último mensaje 15 Junio 2016, 00:05 am
por Eleкtro
Cartón de Bingo en C.
Programación C/C++
zkraven 9 4,473 Último mensaje 12 Febrero 2018, 04:13 am
por Serapis
Corrección ejercicio en C de un bingo
Programación C/C++
vaillo33 6 830 Último mensaje 11 Enero 2019, 21:57 pm
por vaillo33
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines