poniedziałek, 28 września 2026

Another lottery draw simulation (C++ Builder)


file p_Lotto.h

#ifndef p_LottoH
#define p_LottoH
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TLabel *Label1;
TTimer *Timer1;
TButton *Button1;
TButton *Button2;
TEdit *Edit1;
TEdit *Edit2;
TEdit *Edit3;
TEdit *Edit4;
TEdit *Edit5;
TListBox *ListBox1;

void __fastcall Button2Click(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
void __fastcall Timer1Timer(TObject *Sender);

private: // User declarations
   void __fastcall my_Sort(int* tab, int s);
   int base[5];
   int temp[42];
   int rand_Lotto[1000][5];
   int temp_Simulations[1000][42];
   void __fastcall init_Base();
   void __fastcall init_Simulations();
   int sum_5,sum_4,sum_3,sum_2,sum_1,sum_0;
   bool __fastcall is_5(int* base, int* temp);
   bool __fastcall is_4(int* base, int* temp);
   bool __fastcall is_3(int* base, int* temp);
   bool __fastcall is_2(int* base, int* temp);
   bool __fastcall is_1(int* base, int* temp);
   bool __fastcall is_0(int* base, int* temp);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif


file p_Lotto.cpp


 #include <vcl.h>

#include <stdlib.h>

#include <time.h>

#pragma hdrstop


#include "p_Lotto.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

 srand(time(NULL));

 Button1->Caption="&RUN";

 Button2->Caption="&CLOSE";

 UnicodeString c="";

 Edit1->Text=c;

 Edit2->Text=c;

 Edit3->Text=c;

 Edit4->Text=c;

 Edit5->Text=c;


}

void __fastcall TForm1::my_Sort(int* tab, int s)

{

int i,j,k;

for(i=1;i<s;i++)

{

j=i;

k=tab[j];

while((j>0) && (tab[j-1]>k))

{

tab[j]=tab[j-1];

j--;

}

tab[j]=k;

}

}

void __fastcall TForm1::init_Base()

{

int i,j;

for(i=0;i<42;i++)

temp[i]=0;

i=0;

do

{

do{

j=rand()%42;

}while(temp[j]!=0);

temp[j]=1;

base[i]=j+1;

++i;

}while(i<5);

my_Sort(base,5);

}

void __fastcall TForm1::init_Simulations()

{

int i,j,k,l;

for(i=0;i<1000;i++)

{

for(j=0;j<42;j++)

{

temp_Simulations[i][j]=0;

}

}

k=0;

do

{

  j=0;

   do

   {

   do

   {

l=rand()%42;

   }while(temp_Simulations[k][l]!=0);

   temp_Simulations[k][l]=1;

   rand_Lotto[k][j]=l+1;

   ++j;

  }while(j<5);


++k;

}while(k<1000);

}


bool __fastcall TForm1::is_5(int* base, int* temp)

{

int i,j,sum;

sum=0;

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

{

if(base[i]==temp[j])

++sum;

}

}

if(sum==5)

return true;

else

return false;


}

bool __fastcall TForm1::is_4(int* base, int* temp)

{

 int i,j,sum;

sum=0;

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

{

if(base[i]==temp[j])

++sum;

}

}

if(sum==4)

return true;

else

return false;


}

bool __fastcall TForm1::is_3(int* base, int* temp)

{

 int i,j,sum;

sum=0;

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

{

if(base[i]==temp[j])

++sum;

}

}

if(sum==3)

return true;

else

return false;

}

bool __fastcall TForm1::is_2(int* base, int* temp)

{

 int i,j,sum;

sum=0;

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

{

if(base[i]==temp[j])

++sum;

}

}

if(sum==2)

return true;

else

return false;

}

bool __fastcall TForm1::is_1(int* base, int* temp)

{

 int i,j,sum;

sum=0;

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

{

if(base[i]==temp[j])

++sum;

}

}

if(sum==1)

return true;

else

return false;

}


bool __fastcall TForm1::is_0(int* base, int* temp)

{

 int i,j,sum;

sum=0;

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

{

if(base[i]==temp[j])

++sum;

}

}

if(sum==0)

return true;

else

return false;

}

//---------------------------------------------------------------------------










//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

 Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

 int i,j;

 init_Base();

 init_Simulations();

 sum_5=sum_4=sum_3=sum_2=sum_1=sum_0=0;

 Edit1->Text=IntToStr(base[0]);

 Edit2->Text=IntToStr(base[1]);

 Edit3->Text=IntToStr(base[2]);

 Edit4->Text=IntToStr(base[3]);

 Edit5->Text=IntToStr(base[4]);

 ListBox1->Items->Clear();

 ListBox1->Items->Add("After 1000 draws");

 for(i=0;i<1000;i++)

 {

if(is_5(base,rand_Lotto[i]))

++sum_5;

if(is_4(base,rand_Lotto[i]))

++sum_4;

if(is_3(base,rand_Lotto[i]))

++sum_3;

if(is_2(base,rand_Lotto[i]))

++sum_2;

if(is_1(base,rand_Lotto[i]))

++sum_1;

if(is_0(base,rand_Lotto[i]))

++sum_0;

}

 ListBox1->Items->Add("5/5 ="+IntToStr(sum_5));

 ListBox1->Items->Add("5/4 ="+IntToStr(sum_4));

 ListBox1->Items->Add("5/3 ="+IntToStr(sum_3));

 ListBox1->Items->Add("5/2 ="+IntToStr(sum_2));

 ListBox1->Items->Add("5/1 ="+IntToStr(sum_1));

 ListBox1->Items->Add("5/0 ="+IntToStr(sum_0));

}

//---------------------------------------------------------------------------


//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{



 UnicodeString t,d;

 t=TimeToStr(Time());

 d=DateToStr(Date());

 Label1->Caption=d+"  "+t;

}


Brak komentarzy:

Prześlij komentarz