niedziela, 16 grudnia 2018

Greedy algorithm. Creating nad selected sum and sorting from prime numbers.


private: // User declarations
       void __fastcall i_Sort(int *tab, int size);
       void __fastcall m_Sort(int *tab, int size);
       bool __fastcall is_First(int value);
       void __fastcall is_Sum(int *tab, int size,int value);
       int *tab_First,**data_First1,**data_First2,*test_Values;
       void __fastcall init_Arrays();
       void __fastcall destroy_Arrays();

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 srand(time(NULL));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::i_Sort(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;
 }
}
void __fastcall TForm1::m_Sort(int *tab, int size)
{
 int i,j,k;
 for(i=1;i<size;i++)
  for(j=size-1;j>=i;j--)
   if(tab[j]>tab[j-1])
   {
    k=tab[j-1];
    tab[j-1]=tab[j];
    tab[j]=k;
   }
}
bool __fastcall TForm1::is_First(int value)
{
 int i,sum;
 sum=0;
 for(i=1;i<value+1;i++)
  if(value%i==0)
   ++sum;
 if(sum==2)
  return true;
 else
  return false;
}
void __fastcall TForm1::is_Sum(int *tab, int size,int value)
{
 int i,j,sum;

 do
 {
  sum=0;
  for(i=0;i<size;i++)
  {
   j=rand()%500;
   sum+=tab_First[j];
   tab[i]=tab_First[j];
  }
 }while(sum!=value);

}

void __fastcall TForm1::init_Arrays()
{
 int i,j;
 tab_First=new int[100];
 test_Values=new int[10];
 data_First1=new int *[10];
 data_First2=new int *[10];
 for(i=0;i<10;i++)
 {
  data_First1[i]=new int[10];
  data_First2[i]=new int[10];
 }
 i=0;j=2;
 do
 {
   if(is_First(j))
   {
    tab_First[i]=j;
    ++i;
   }
   ++j;
 }while(i<100);


}
void __fastcall TForm1::destroy_Arrays()
{
 int i;
 delete tab_First;
 delete test_Values;
 for(i=0;i<10;i++)
 {
  delete [] data_First2[i];
  delete [] data_First1[i];
 }
 delete data_First1;
 delete data_First2;

}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
 init_Arrays();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 int i,j,min,max;
 min=800;
 max=2000;
 for(i=0;i<10;i++)
 {
  test_Values[i]=min+rand()%(max-min);
  StringGrid3->Cells[0][i]=IntToStr(test_Values[i]);
 }
 for(i=0;i<10;i++)
 {
  is_Sum(data_First1[i],10,test_Values[i]);
  is_Sum(data_First2[i],10,test_Values[i]);
 }
 for(i=0;i<10;i++)
 {
  i_Sort(data_First1[i],10);
  m_Sort(data_First2[i],10);
 }
 for(i=0;i<10;i++)
 {
  for(j=0;j<10;j++)
  {
   StringGrid1->Cells[i][j]=IntToStr(data_First1[j][i]);
   StringGrid2->Cells[i][j]=IntToStr(data_First2[j][i]);
  }
 }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
 destroy_Arrays();
 Close();
}

Brak komentarzy:

Prześlij komentarz