czwartek, 20 lipca 2017

Lottery Visual C++

Polish Lotto game lottery draws numbers 6 out of 49. I will play 1000 bets. Numbers will be sorted and I will present the statistics. 




#pragma endregion

private: int **my_Bet;
private: int *Lotto;
private: System::Void Sort(int *table, int size)
{
int i,j,temp;
for(i=1;i<size;i++)
for(j=size-1;j>=i;j--)
if(table[j]<table[j-1])
    {
temp=table[j-1];
table[j-1]=table[j];
table[j]=temp;
 
    }
}
   private: System::Void init_Table()
{
int i;
my_Bet=new int*[1000];
for(i=0;i<1000;i++)
my_Bet[i]=new int[6];
Lotto=new int[6];
}
private: System::Void delete_Table()
{
int i;
for(i=0;i<1000;i++)
delete [] my_Bet[i];
delete [] *my_Bet;
delete Lotto;
}
private: System::Boolean is_Six(int *tab1, int *tab2,int size)
 {
 int i,j,value;
 value=0;
 i=0;
 do
 {
                    for(j=0;j<size;j++)
                     if(tab1[i]==tab2[j])
++value;
                   ++i;   
 }while(i<size);
 if(value==6)
 return true;
 else
 return false;
 }
private: System::Boolean is_Five(int *tab1, int *tab2,int size)
 {
 int i,j,value;
 value=0;
 i=0;
 do
 {
                    for(j=0;j<size;j++)
                     if(tab1[i]==tab2[j])
++value;
                   ++i;   
 }while(i<size);
 if(value==5)
 return true;
 else
 return false;
 }
private: System::Boolean is_Four(int *tab1, int *tab2,int size)
 {
 int i,j,value;
 value=0;
 i=0;
 do
 {
                    for(j=0;j<size;j++)
                     if(tab1[i]==tab2[j])
++value;
                   ++i;   
 }while(i<size);
 if(value==4)
 return true;
 else
 return false;
 }
private: System::Boolean is_Three(int *tab1, int *tab2,int size)
 {
 int i,j,value;
 value=0;
 i=0;
 do
 {
                    for(j=0;j<size;j++)
                     if(tab1[i]==tab2[j])
++value;
                   ++i;   
 }while(i<size);
 if(value==3)
 return true;
 else
 return false;
 }
private: System::Boolean is_Two(int *tab1, int *tab2,int size)
 {
 int i,j,value;
 value=0;
 i=0;
 do
 {
                    for(j=0;j<size;j++)
                     if(tab1[i]==tab2[j])
++value;
                   ++i;   
 }while(i<size);
 if(value==2)
 return true;
 else
 return false;
 }
private: System::Boolean is_One(int *tab1, int *tab2,int size)
 {
 int i,j,value;
 value=0;
 i=0;
 do
 {
                    for(j=0;j<size;j++)
                     if(tab1[i]==tab2[j])
++value;
                   ++i;   
 }while(i<size);
 if(value==1)
 return true;
 else
 return false;
 }
 private: System::Boolean is_Zero(int *tab1, int *tab2,int size)
 {
 int i,j,value;
 value=0;
 i=0;
 do
 {
                    for(j=0;j<size;j++)
                     if(tab1[i]==tab2[j])
++value;
                   ++i;   
 }while(i<size);
 if(value==0)
 return true;
 else
 return false;
 }
private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
srand(time(NULL));
init_Table();
dataGridView1->RowCount=1;
dataGridView1->ColumnCount=6;
dataGridView1->Rows[0]->Height=30;
 
}

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
DataGridViewCellStyle^ my_Style=gcnew DataGridViewCellStyle();
System::Drawing::Font^ my_Font=gcnew
System::Drawing::Font(System::Drawing::FontFamily::GenericSansSerif,22,FontStyle::Regular);
my_Style->Font=my_Font;
dataGridView1->Rows[0]->DefaultCellStyle->BackColor=System::Drawing::Color::YellowGreen;
listBox1->Items->Clear();
int i,j,k,value;
int *temp_Lotto,**temp_Bet;
temp_Lotto=new int[49];
temp_Bet=new int*[1000];
 for(i=0;i<1000;i++)
 temp_Bet[i]=new int[49];
 for(i=0;i<49;i++)
 temp_Lotto[i]=0;
 for(i=0;i<1000;i++)
 for(j=0;j<49;j++)
 temp_Bet[i][j]=0;
                  i=0;
 do
 {
                   do
  {
 value=rand()%49;
  } while(temp_Lotto[value]!=0);
                    temp_Lotto[value]=1;
   Lotto[i]=value+1;
++i;
 }while(i<6);
 i=0;
 do
 {
                   j=0;
  do
  {
  do
  {
                    value=rand()%49;
  }while(temp_Bet[i][value]!=0);
  temp_Bet[i][value]=1;
                   my_Bet[i][j]=value+1;
  ++j;
 }while(j<6);
 ++i;
    }while(i<1000);
 Sort(Lotto,6);
    for(i=0;i<1000;i++)
Sort(my_Bet[i],6);
 for(i=0;i<6;i++)
 dataGridView1->Rows[0]->Cells[i]->Value=Lotto[i].ToString();
 for(i=0;i<1000;i++)
 for(i=0;i<1000;i++)
 {
 
 
 listBox1->Items->Add((i+1).ToString()+")        "+my_Bet[i][0].ToString()+","+my_Bet[i][1].ToString()+","+my_Bet[i][2].ToString()+
 ","+my_Bet[i][3].ToString()+","+my_Bet[i][4].ToString()+","+my_Bet[i][5].ToString());
 
 }
 int a0,a1,a2,a3,a4,a5,a6;
 a0=a1=a2=a3=a4=a5=a6=0;
 for(i=0;i<1000;i++)
 {
 if(is_Zero(my_Bet[i],Lotto,6))
 ++a0;
 if(is_One(my_Bet[i],Lotto,6))
 ++a1;
 if(is_Two(my_Bet[i],Lotto,6))
 ++a2;
 if(is_Three(my_Bet[i],Lotto,6))
 ++a3;
 if(is_Four(my_Bet[i],Lotto,6))
 ++a4;
 if(is_Five(my_Bet[i],Lotto,6))
 ++a5;
 if(is_Six(my_Bet[i],Lotto,6))
 ++a6;

 }
 textBox1->Text=a6.ToString();
 textBox2->Text=a5.ToString();
 textBox3->Text=a4.ToString();
 textBox4->Text=a3.ToString();
 textBox5->Text=a2.ToString();
 textBox6->Text=a1.ToString();
 textBox7->Text=a0.ToString();
 delete [] temp_Bet[i];
 delete [] *temp_Bet;
 delete temp_Lotto;

}
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
delete_Table();
Close();
}
};
}

niedziela, 16 lipca 2017

FIFO Queues - C++ (g++)

I have the file: capitals 

London  8800000
Berlin  3400000
Moscow  13200000
Warsaw  1700000
Roma  2800000
Amsterdam  742000
Oslo  660000
Copenhagen  520000
Bratislava  450000
Madrid  3200000


And next I make FIFO-Queues and uses data. 

#include <iostream>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
using namespace std;
#define max 10
template <class Queue> class QQ
{
    private:
    int start,end,size;
    Queue *temp_Queue;
    public:
    QQ(int x)
    {
        size=x;
        temp_Queue=new Queue[size+1];
        start=0;
        end=0;
    }
    bool is_Empty()
    {
        if(start==end)
         return true;
        else
         return false;
    }
    int Run(Queue &temp_Q)
    {
        if(start==end)
         return -1;
        temp_Q=temp_Queue[start++];
        if(start>size)
         start=0;
        return 1;
    }
    void Insert(Queue temp_Q)
    {
        temp_Queue[end++]=temp_Q;
        if(end>size)
         end=0;
    }
    ~QQ()
    {
        delete temp_Queue;
    }
   
   
};
struct Capital
{
    char name[20];
    int population;
};

int main(int argc, char **argv)
{
    struct Capital *Date=new struct Capital[max];
   
    FILE *file;
    int i;
    file=fopen("capitals","r");
    for(i=0;i<max;i++)
    {
     char temp[20];
     fscanf(file,"%s",temp);
     strcpy(Date[i].name,temp);
     fscanf(file,"%d",&Date[i].population);
    }
    fclose(file);
    QQ<int> population_capitals(max);
    QQ<char*> names_capitals(max);
   
    for(i=0;i<max-1;i++)
    {
        population_capitals.Insert(Date[i].population);
        names_capitals.Insert(Date[i].name);
    }
    for(i=0;i<max;i++)
    {
        int cap;
        char *temp_capitals;
        int temp_Q1,temp_Q2;
        temp_Q1=names_capitals.Run(temp_capitals);
        temp_Q2=population_capitals.Run(cap);
        if(temp_Q1==1 && temp_Q2==1)
        printf("Capital - %s ,population - %d",temp_capitals,cap);
        printf("\n");
    }
   
   
    delete Date;
   
    return 0;
}



Load CPU (Visaul C++)



#pragma endregion
int *table;
System::Single single_value;
int step;
private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
textBox1->Text=performanceCounter1->NextValue().ToString();
single_value=Convert::ToSingle(textBox1->Text);
textBox1->Text=textBox1->Text+"%";
table[step]=(System::Int32)single_value;
++step;
panel1->Refresh();

}
private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
table=new int[panel1->Width];
step=0;
}
private: System::Void panel1_Paint(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e) {
Random^ random_value=gcnew Random();
System::Drawing::Color my_color;
 
if(step>panel1->Width)
{
step=0;
e->Graphics->Clear(System::Drawing::Color::White);
}
int i;
for(i=1;i<step;i++)
{
my_color=System::Drawing::Color::FromArgb(random_value->Next(255),random_value->Next(255),random_value->Next(255));
Pen^ line=gcnew Pen(my_color);
line->Width=1;
e->Graphics->DrawLine(line,i-1,300-(table[i-1]*3.),i,300-(table[i]*3.));
}


}
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
delete table;
Close();
}
};
}


czwartek, 13 lipca 2017

Drawing trigonometric transformations (Visual C++)




struct x_y
{
int x_panel;
int y_panel;
double xr_width;
double yr_height;
};
double a[3];
double b[3];

float value_sin_1(double a1,double a2, double a3,double a4)
{
float value;
value=a1+a3*sin(-1.0*(a2-a3)/a3*a4);
return value;
}
float value_cos_1(double a1, double a2, double a3, double a4)
{
float value;
value=a1+a3*cos(-1.0*(a2-a3)/a3*a4);
return value;
}
float value_sin_2(double a1, double a2, double a3, double a4)
{
float value;
value=a1-a3*sin(-1.0*(a2-a3)/a3*a4);
return value;
}
float value_cos_2(double a1,double a2, double a3, double a4)
{
float value;
value=a1-a3*cos(-1.0*(a2-a3)/a3*a4);
return value;
}

float value_sin_3(double a1, double a2, double a3, double a4)
{
float value;
value=a1+(a2-a3)*sin(1.0*a4);
return value;
}
float value_cos_3(double a1, double a2, double a3, double a4)
{
float value;
value=a1+(a2-a3)*cos(1.0*a4);
return value;
}

#pragma endregion
private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
}
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
Graphics^ draw1=panel1->CreateGraphics();
struct x_y date;
date.x_panel=panel1->Width/2;
date.y_panel=panel1->Height/2;
date.xr_width=1.*panel1->Width/2.;
date.yr_height=1.*panel1->Height/4.;
double pi=3.14159265359;
double max_value=3.0*pi;
double step;
Random^ random_value=gcnew Random();
Pen^ draw_pen;
System::Drawing::Color my_color;
for(step=0.0;step<max_value;step+=0.01)
{
a[0]=value_cos_3(date.x_panel,date.xr_width,date.yr_height,step);
b[0]=value_sin_3(date.x_panel,date.xr_width,date.yr_height,step);
a[1]=value_cos_1(a[0],date.xr_width,date.yr_height,step);
b[1]=value_sin_1(b[0],date.xr_width,date.yr_height,step);
a[2]=value_cos_2(a[1],date.xr_width,date.yr_height,step);
b[2]=value_sin_2(b[1],date.xr_width,date.yr_height,step);
my_color=System::Drawing::Color::FromArgb(random_value->Next(255),
random_value->Next(255),random_value->Next(255));
draw_pen=gcnew Pen(my_color);
draw1->DrawLine(draw_pen,int(a[1]),int(b[1]),int(a[2]),int(b[2]));
}
}
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
Close();
}
};
}


czwartek, 6 lipca 2017

The Sieve of Eratosthenes in class (C++)

#include <conio.h>
#include <iostream>
using namespace std;

class sieve_Erastotenes
{
private:
int *first_table;
int size;
public:
sieve_Erastotenes(int x)
{
int i;
size=x;
first_table=new int[size+1];
for(i=1;i<=size;i++)
 first_table[i]=i;
}
bool is_True(int x)
{
if(first_table[x]==0)
 return true;
else
 return false;

}
void Read()
{
int i,j;
i=1;
while(i<size)
{
for(i++;is_True(i);i++);
j=2;
while(i*j<=size)
{
first_table[i*j]=0;
j++;
}
}
}
void Write()
{
int i;
for(i=2;i<=size;i++)
 if(!is_True(i))
  cout<<first_table[i]<<endl;
}

~sieve_Erastotenes()
{
delete first_table;
}

};

 int _tmain(int argc, _TCHAR* argv[])
{
  int limit_numbers;
  cin>>limit_numbers;
  cout<<"The first numbers from 2 to "<<limit_numbers<<endl;
  sieve_Erastotenes SE(limit_numbers);
  SE.Read();
  SE.Write();


 getch();
return 0;
}

środa, 5 lipca 2017

Floyd-Warshall algorithm (C++)

#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define max_value 20000
#define min_tab 5
#define max_tab 10
#define min_width 20
#define max_width 200
using namespace std;

int **graph_table;
int size;
int min_Values(int a, int b)
{
if(a<=b)
return a;
else
return b;
}

bool  random_Wrong()
{
  int value;
  value=rand()%10;
  if(value<3)
   return true;
  else
   return false;
}

void init_Values()
{
int i,j,k;
size=min_tab+rand()%(max_tab-min_tab);
graph_table=new int*[size];
for(i=0;i<size;i++)
graph_table[i]=new int[size];
for(i=0;i<size;i++)
{
for(j=0;j<size;j++)
{
 if(random_Wrong())
 {
  graph_table[i][j]=min_width+rand()%(max_width-min_width);
 }
 else
 {
  graph_table[i][j]=max_value;
 }
}
}
}

 int _tmain(int argc, _TCHAR* argv[])
{
  int i,j,k;
  srand(time(NULL));
  init_Values();
  for(i=0;i<size;i++)
for(j=0;j<size;j++)
 for(k=0;k<size;k++)
  graph_table[j][k]=min_Values(graph_table[j][k],graph_table[j][i]+graph_table[i][k]);
  cout<<"Size = "<<size<<endl;
  for(i=0;i<size;i++)
   for(j=0;j<size;j++)
   {
  if(graph_table[i][j]==max_value)
  {
  cout<<i+1<<"*---*>>"<<j+1<<" *is not connect*"<<endl;
  }
  else
if(i!=j)
cout<<i+1<<"*---*>>"<<j+1<<"=="<<graph_table[i][j]<<endl;
   }

  for(i=0;i<size;i++)
   delete[] graph_table[i];
  delete []graph_table;





 getch();
return 0;
}