Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  loto
Language: C/C++
Code:
/*
 * loto6.c
 *
 * Generador de apuestas aleatorias para los sorteos de la bonoloto
 * y de la primitiva.
 *
 * Autor: Vicente Fernández García <[email protected]>
 * Fecha de creación: 16/12/2017
 *
 */

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

#define TBOLAS 49
#define NBOLAS 6
#define TCICLOS 100000000

typedef struct
{
     int numero;
     int contador;
} BolaNumero;

void modoDeUso(void);
void iniciarApuesta(BolaNumero* apuesta);
void generarApuesta(BolaNumero* apuesta);
void ordenarApuesta(BolaNumero* apuesta);
void mostrarApuesta(BolaNumero* apuesta);

int main(int argc, char* argv[])
{
     modoDeUso();

     if(argc < 2)
     {
          printf("¡Error! Debe introducir el número de apuestas [1..8]nn");
          exit(1);
     }

     int napuestas = atoi(argv[1]);

     if(napuestas < 1 || napuestas > 8)
     {
          printf("¡Error! Número máximo de apuestas [1..8]nn");
          exit(1);
     }

     BolaNumero apuesta[TBOLAS];

     printf("Generando %d apuestas...nn", napuestas);

     for(int i = 0; i < napuestas; i++)
     {
          printf("[%d] ", i + 1);
          iniciarApuesta(apuesta);
          generarApuesta(apuesta);
          ordenarApuesta(apuesta);
          mostrarApuesta(apuesta);
     }

     printf("n¡Que tenga mucha suerte....!nn");
     return 0;
}

void modoDeUso(void)
{
     printf("LOTO6 - Versión 1.0 (16/12/2017)n");
     printf("Generador de apuestas de la Bonoloto y la Primitivan");
     printf("Copyright (C) 2017 - Vicente Fernández Garcíann");
     printf("Uso: loto6 [1..8]nn");
     return;
}

void iniciarApuesta(BolaNumero* apuesta)
{
     for(int i = 0; i < TBOLAS; i++)
     {
          apuesta[i].numero = i + 1;
          apuesta[i].contador = 0;
     }
     return;
}

void generarApuesta(BolaNumero* apuesta)
{
     static bool primeraVez = true;

     if(primeraVez)
     {
          srand(time(NULL));
          primeraVez = false;
     }

     for(int i = 0; i < TCICLOS; i++)
     {
          int numero = rand() % TBOLAS + 1;
          apuesta[numero - 1].contador++;
     }
     return;
}

void ordenarApuesta(BolaNumero* apuesta)
{
     for(int i = 0; i < TBOLAS; i++)
     {
          for(int j = 0; j < TBOLAS - 1; j++)
          {
               if(apuesta[j].contador < apuesta[j + 1].contador)
               {
                    BolaNumero aux;
                    aux.numero = apuesta[j].numero;
                    aux.contador = apuesta[j].contador;
                    apuesta[j] = apuesta[j + 1];
                    apuesta[j+1] = aux;
               }
          }
     }
     return;
}

void mostrarApuesta(BolaNumero* apuesta)
{
     for(int i = 0; i < NBOLAS; i++)
     {
          printf("%02d", apuesta[i].numero);
          if( i < NBOLAS -1)
               printf(" - ");
     }
     printf("n");
     return;
}
          
Comments: