I want to check 1000 number draws (5 different numbers [42 max value]) and make a camparison to the pattern. 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 42
#define BETS 1000
#define VAL_BET 5
void sort_Bet(int *tab, int size)
{
 int i,j,k;
 for(i=1;i<size;i++)
 {
  j=i;
  k=tab[j];
  while((j>0) && (tab[j-1]>k))
  {
   tab[j]=tab[j-1];
   j--;
  }
  tab[j]=k;
 }
}
int *tab_Bet;
int **tab_Game;
void init_Arrays()
{
 int i,j,k; 
 int temp_tab_Bet[MAX];
 int temp_tab_Game[BETS][MAX];
 tab_Bet=(int*)malloc(VAL_BET*sizeof(int));
 tab_Game=(int**)malloc(BETS*sizeof(int*));
 for(i=0;i<BETS;i++)
  tab_Game[i]=(int*)malloc(VAL_BET*sizeof(int*)); 
 for(i=0;i<MAX;i++)
  temp_tab_Bet[i]=0;
 for(i=0;i<BETS;i++)
  for(j=0;j<MAX;j++)
  temp_tab_Game[i][j]=0;
 i=0;
 do
 {
  do
  {
  k=rand()%MAX;
  }while(temp_tab_Bet[k]!=0);
  temp_tab_Bet[k]=1;
  tab_Bet[i]=k+1;
  i++;
  } while(i<VAL_BET);
  sort_Bet(tab_Bet,VAL_BET);
  i=0;
  do
  {
   j=0;   
   do
   {   
   do
   {
    k=rand()%MAX;
   }while(temp_tab_Game[i][k]!=0);
   temp_tab_Game[i][k]=1;
   tab_Game[i][j]=k+1;
   ++j;
   }while(j<VAL_BET);     
    ++i;  
  }while(i<BETS);
  for(i=0;i<BETS;i++)
   sort_Bet(tab_Game[i],VAL_BET);
}
void destroy_Arrays()
{
 int i;
 for(i=0;i<BETS;i++)
  free(tab_Game[i]);
 free(tab_Game);
 free(tab_Bet);
}
int is_Five(int *tab1, int *tab2, int size)
{
 int i,j,sum;
 sum=0;
 i=0;
 do
 {
  for(j=0;j<size;j++)
   if(tab1[j]==tab2[i])
    ++sum;
  ++i;
 }while(i<size);
 if(sum==5)
  return 1;
 else
  return 0;
 
}
int is_Four(int *tab1, int *tab2, int size)
{
 int i,j,sum;
 sum=0;
 i=0;
 do
 {
  for(j=0;j<size;j++)
   if(tab1[j]==tab2[i])
    ++sum;
  ++i;
 }while(i<size);
 if(sum==4)
  return 1;
 else
  return 0;
 
}
int is_Three(int *tab1, int *tab2, int size)
{
 int i,j,sum;
 sum=0;
 i=0;
 do
 {
  for(j=0;j<size;j++)
   if(tab1[j]==tab2[i])
    ++sum;
  ++i;
 }while(i<size);
 if(sum==3)
  return 1;
 else
  return 0;
 
}
int is_Two(int *tab1, int *tab2, int size)
{
 int i,j,sum;
 sum=0;
 i=0;
 do
 {
  for(j=0;j<size;j++)
   if(tab1[j]==tab2[i])
    ++sum;
  ++i;
 }while(i<size);
 if(sum==2)
  return 1;
 else
  return 0;
 
}
int is_One(int *tab1, int *tab2, int size)
{
 int i,j,sum;
 sum=0;
 i=0;
 do
 {
  for(j=0;j<size;j++)
   if(tab1[j]==tab2[i])
    ++sum;
  ++i;
 }while(i<size);
 if(sum==1)
  return 1;
 else
  return 0;
 
}
int is_Zero(int *tab1, int *tab2, int size)
{
 int i,j,sum;
 sum=0;
 i=0;
 do
 {
  for(j=0;j<size;j++)
   if(tab1[j]==tab2[i])
    ++sum;
  ++i;
 }while(i<size);
 if(sum==0)
  return 1;
 else
  return 0;
 
}
int main(int argc, char **argv)
{
 int i;
 int win_0,win_1,win_2,win_3,win_4,win_5;
 win_0=win_1=win_2=win_3=win_4=win_5=0;
 srand(time(NULL));
 init_Arrays();
 for(i=0;i<BETS;i++)
 {
  if(is_Zero(tab_Game[i],tab_Bet,VAL_BET))
   ++win_0;
  if(is_One(tab_Game[i],tab_Bet,VAL_BET))
   ++win_1;
  if(is_Two(tab_Game[i],tab_Bet,VAL_BET))
   ++win_2;
  if(is_Three(tab_Game[i],tab_Bet,VAL_BET))
   ++win_3;
  if(is_Four(tab_Game[i],tab_Bet,VAL_BET))
   ++win_4;
  if(is_Five(tab_Game[i],tab_Bet,VAL_BET))
   ++win_5;
 }
 
 printf("Your BET: (5 [42])");
 printf("\n");
 for(i=0;i<VAL_BET;i++)
 printf("%d  ",tab_Bet[i]);
 printf("\n----------------------------------------------\n");
 printf("For 1000 draws: \n\n");
 printf(" 5 - %d\n",win_5);
 printf(" 4 - %d\n",win_4);
 printf(" 3 - %d\n",win_3);
 printf(" 2 - %d\n",win_2);
 printf(" 1 - %d\n",win_1);
 printf(" 0 - %d\n",win_0);
 
 
 destroy_Arrays();
 
 return 0;
}
Brak komentarzy:
Prześlij komentarz