Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: AlbertoBSD en 12 Junio 2016, 04:18 am



Título: [Aporte] Loteria en C - Programa que Muestra las cartas en Desorden
Publicado por: AlbertoBSD en 12 Junio 2016, 04:18 am
Les dejo un programa para que juegen loteria mexicana

Código
  1. #include<stdio.h>
  2. #include<time.h>
  3. #include<stdlib.h>
  4.  
  5. int *barajear(int max);
  6.  
  7. char *cartas[] = {
  8. "El Ggallo","El diablito","La dama","El Catrin","El paraguas","La sirena","La escalera","La botella","El barril","El arbol","El melon","El valiente","El gorrito","La muerte","La pera","La bandera","El bandolon","El violoncello","La garza","El pajarito","La mano","La bota","La luna","El cotorro","El borracho","El corazon","El negrito","La sandia","El tambor","El camaron","Las jaras","El musico","La araña","El soldado","La estrella","El cazo","El mundo","El apache","El nopal","El alacran","la rosa","La calavera","La campana","El cantarito","El venado","El sol","La corona","La chalupa","El pino","El pescado","La palma","La maceta","El arpa","La rana"};
  9.  
  10. int main() {
  11. int *baraja = barajear(54);
  12. int i = 0;
  13. char c;
  14. while(i<54) {
  15. printf("%s\n",cartas[baraja[i]]);
  16. c = fgetc(stdin);
  17. i++;
  18. }
  19. }
  20.  
  21. int *barajear(int max) {
  22. char *no_repetidos = NULL;
  23. int *desorden = NULL;
  24. int r = 0;
  25. register int i = 0;
  26. sranddev();
  27. srand(time(NULL));
  28. while(no_repetidos == NULL){
  29. no_repetidos = calloc(max,sizeof(char));
  30. }
  31. while(desorden == NULL){
  32. desorden = calloc(max,sizeof(int));
  33. }
  34. do {
  35. r = rand() % max;
  36. if(no_repetidos[r] == 0) {
  37. desorden[i] = r;
  38. no_repetidos[r] = 1;
  39. i++;
  40. }
  41. }while(i < max);
  42. free(no_repetidos);
  43. return desorden;
  44. }

Saludos!