niedziela, 19 kwietnia 2020

Floyds algorithm (C++ Builder)




#define size_FL 36
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 srand(time(NULL));
}
//---------------------------------------------------------------------------
int min_Array(int a, int b)
{
 if(a<b)
  return a;
 else
  return b;
}
int max_Array(int a, int b)
{
 if(a>b)
  return a;
 else
  return b;
}
void __fastcall TForm1::init_minus_One(int **tab, int t_Size)
{
 for(int i=0;i<t_Size;i++)
  for(int j=0;j<t_Size;j++)
   tab[i][j]=-1;
}
void __fastcall TForm1::init_temp_Zero(int *tab, int t_Size)
{
 for(int i=0;i<t_Size;i++)
  tab[i]=0;
}
void __fastcall TForm1::min_Floyd(int **tab, int size)
{
 int i,j,k;
 for(i=0;i<size;i++)
  for(j=0;j<size;j++)
   for(k=0;k<size;k++)
    tab[j][k]=min_Array(tab[j][k],tab[j][i]+tab[i][k]);
}
void __fastcall TForm1::max_Floyd(int **tab, int size)
{
 int i,j,k;
 for(i=0;i<size;i++)
  for(j=0;j<size;j++)
   for(k=0;k<size;k++)
    tab[j][k]=max_Array(tab[j][k],tab[j][i]+tab[i][k]);
}
void __fastcall max_Floyd(int **tab, int size);
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 int i,j,k,random_V;
 int **FLOYD_TABLE;
 int *temp_table_X;
 int *temp_table_Y;
 FLOYD_TABLE=new int *[size_FL];
 for(i=0;i<size_FL;i++)
  FLOYD_TABLE[i]=new int[size_FL];
 temp_table_X=new int[size_FL];
 temp_table_Y=new int[size_FL];
 init_minus_One(FLOYD_TABLE,size_FL);
 init_temp_Zero(temp_table_Y,size_FL);
 init_temp_Zero(temp_table_X,size_FL);
 random_V=rand()%(64-16)+16;
 Edit1->Text="RANDOM VALUES TABLE= "+IntToStr(random_V);

 i=0;
 do
 {
  j=rand()%size_FL;
  if(temp_table_X[j]==0)
  {
   temp_table_X[j]=1;
   ++i;
  }
 }while(i<random_V);
 i=0;
 do
 {
  j=rand()%size_FL;
  if(temp_table_Y[j]==0)
  {
   temp_table_Y[j]=1;
   ++i;
  }
 }while(i<random_V);
 int *index_X,*index_Y;
 index_X=new int[random_V];
 index_Y=new int[random_V];
 i=0;
 j=0;
 do
 {
  if(temp_table_X[j]==1)
  {
   index_X[i]=j;
   ++i;
  }
  ++j;
 }while(i<random_V);
 i=0;
 j=0;
 do
 {
  if(temp_table_Y[j]==1)
  {
   index_Y[i]=j;
   ++i;
  }
  ++j;
 }while(i<random_V);
 for(i=0;i<random_V;i++)
 {
  FLOYD_TABLE[index_X[i]][index_Y[i]]=rand()%(360-10)+10;
 }
 for(i=0;i<size_FL;i++)
  for(j=0;j<size_FL;j++)
   StringGrid1->Cells[j][i]=IntToStr(FLOYD_TABLE[i][j]);
 int **FLOYD_MAX;
 int **FLOYD_MIN;
 FLOYD_MIN=new int *[size_FL];
 FLOYD_MAX=new int *[size_FL];
 for(i=0;i<size_FL;i++)
 {
  FLOYD_MAX[i]=new int[size_FL];
  FLOYD_MIN[i]=new int[size_FL];
 }
 for(i=0;i<size_FL;i++)
 {
  for(j=0;j<size_FL;j++)
  {
   FLOYD_MAX[i][j]=FLOYD_TABLE[i][j];
   FLOYD_MIN[i][j]=FLOYD_TABLE[i][j];
  }
 }
 min_Floyd(FLOYD_MIN,size_FL);
 max_Floyd(FLOYD_MAX,size_FL);

 for(i=0;i<size_FL;i++)
 {
  for(j=0;j<size_FL;j++)
  {
   if(FLOYD_MIN[i][j]!=-1 && i!=j)
    ListBox1->Items->Add(IntToStr(i)+"--->"+IntToStr(j)+" = "+IntToStr(FLOYD_MIN[i][j]));
  }
 }
 for(i=0;i<size_FL;i++)
 {
  for(j=0;j<size_FL;j++)
  {
   if(FLOYD_MAX[i][j]!=-1 && i!=j)
     ListBox2->Items->Add(IntToStr(i)+"--->"+IntToStr(j)+" = "+IntToStr(FLOYD_MAX[i][j]));
  }
 }

 for(i=0;i<size_FL;i++)
 {
  delete FLOYD_TABLE[i];
  delete FLOYD_MIN[i];
  delete FLOYD_MAX[i];
 }
 delete [] FLOYD_TABLE;
 delete [] FLOYD_MIN;
 delete [] FLOYD_MAX;
 delete temp_table_X;
 delete temp_table_Y;
 delete index_X;
 delete index_Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 Close();
}


YOU CAN PAY ME - https://paypal.me/LukaszW77?locale.x=pl_PL



poniedziałek, 6 kwietnia 2020

Use DataGridView (Visual C++)






#pragma endregion
    private: System::Void 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;
                 }
             }
    private: System::Double sum_double_Tab(double *tab, int size)
             {
                 double sum;
                 sum=0.0;
                 for(int i=0;i<size;i++)
                     sum+=tab[i];
                 return sum;
             }
    private: System::Int64 sum_int_Tab(int *tab, int size)
             {
                 int sum;
                 sum=0;
                 for(int i=0;i<size;i++)
                     sum+=tab[i];
                 return sum;
             }
    private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
                 Close();
             }
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
                 srand(time(NULL));
             }
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
             int i,j;
             DataGridViewCellStyle^ grids_Style1=gcnew DataGridViewCellStyle();
             DataGridViewCellStyle^ grids_Style2=gcnew DataGridViewCellStyle();
             DataGridViewCellStyle^ grids_Style3=gcnew DataGridViewCellStyle();
             System::Drawing::Font^ font_Grid1=gcnew System::Drawing::Font(System::Drawing::FontFamily::GenericSansSerif,16,FontStyle::Regular);
             System::Drawing::Font^ font_Grid2=gcnew System::Drawing::Font(System::Drawing::FontFamily::GenericSansSerif,16,FontStyle::Underline);
             System::Drawing::Font^ font_Grid3=gcnew System::Drawing::Font(System::Drawing::FontFamily::GenericSansSerif,16,FontStyle::Italic);
             
             dataGridView2->ColumnCount=1;
             dataGridView2->RowCount=5;
             grids_Style2->Font=font_Grid2;
             grids_Style2->ForeColor=System::Drawing::Color::Green;
             dataGridView2->DefaultCellStyle=grids_Style2;
             dataGridView2->DefaultCellStyle->BackColor=Color::Coral;
             dataGridView2->Columns[0]->Width=95;
             for(i=0;i<5;i++)
                 dataGridView2->Rows[i]->Height=30;
             grids_Style2->Font=font_Grid2;
             grids_Style2->ForeColor=System::Drawing::Color::Green;
             dataGridView2->DefaultCellStyle=grids_Style2;
             dataGridView2->Rows[0]->Cells[0]->Value="NUMBERS: ";
             dataGridView2->Rows[1]->Cells[0]->Value="1/n";
             dataGridView2->Rows[2]->Cells[0]->Value="sqrt(n)";
             dataGridView2->Rows[3]->Cells[0]->Value="sin(n)";
             dataGridView2->Rows[4]->Cells[0]->Value="cos(n)";
           
             
             dataGridView1->ColumnCount=10;
             dataGridView1->RowCount=5;
             dataGridView1->DefaultCellStyle->BackColor=Color::Yellow;
             dataGridView1->AlternatingRowsDefaultCellStyle->BackColor=Color::Red;
             for(i=0;i<10;i++)
                 dataGridView1->Columns[i]->Width=90;
             for(i=0;i<5;i++)
                 dataGridView1->Rows[i]->Height=30;
             grids_Style1->Font=font_Grid1;
             grids_Style1->ForeColor=System::Drawing::Color::Brown;
             dataGridView1->DefaultCellStyle=grids_Style1;
             int tab_Numbers[10];
             double one_Tab[10],sqrt_Tab[10],sin_Tab[10],cos_Tab[10];
             for(i=0;i<10;i++)
             {
                 tab_Numbers[i]=rand()%360+1;
             }
             Sort(tab_Numbers,10);
             for(i=0;i<10;i++)
             {
                 one_Tab[i]=1./(double(tab_Numbers[i]*1.00));
                 sqrt_Tab[i]=sqrt(double(tab_Numbers[i]*1.00));
                 sin_Tab[i]=sin(double(tab_Numbers[i]*1.00));
                 cos_Tab[i]=cos(double(tab_Numbers[i]*1.00));
             }
             for(i=0;i<10;i++)
             {
                 dataGridView1->Rows[0]->Cells[i]->Value=(tab_Numbers[i]).ToString();
                 dataGridView1->Rows[1]->Cells[i]->Value=one_Tab[i].ToString();
                 dataGridView1->Rows[2]->Cells[i]->Value=sqrt_Tab[i].ToString();
                 dataGridView1->Rows[3]->Cells[i]->Value=sin_Tab[i].ToString();
                 dataGridView1->Rows[4]->Cells[i]->Value=cos_Tab[i].ToString();
             }

             dataGridView3->ColumnCount=1;
             dataGridView3->RowCount=5;
             dataGridView3->DefaultCellStyle->BackColor=Color::BlueViolet;
             dataGridView3->Columns[0]->Width=100;
             for(i=0;i<5;i++)
                 dataGridView3->Rows[i]->Height=30;
             grids_Style3->Font=font_Grid3;
             grids_Style3->ForeColor=System::Drawing::Color::DarkOrange;
             dataGridView3->DefaultCellStyle=grids_Style3;
             int sum_Num;
             double sum_One,sum_Sqrt,sum_Sin,sum_Cos;
             sum_Num=sum_int_Tab(tab_Numbers,10);
             sum_One=sum_double_Tab(one_Tab,10);
             sum_Sqrt=sum_double_Tab(sqrt_Tab,10);
             sum_Sin=sum_double_Tab(sin_Tab,10);
             sum_Cos=sum_double_Tab(cos_Tab,10);
             dataGridView3->Rows[0]->Cells[0]->Value=sum_Num.ToString();
             dataGridView3->Rows[1]->Cells[0]->Value=sum_One.ToString();
             dataGridView3->Rows[2]->Cells[0]->Value=sum_Sqrt.ToString();
             dataGridView3->Rows[3]->Cells[0]->Value=sum_Sin.ToString();
             dataGridView3->Rows[4]->Cells[0]->Value=sum_Cos.ToString();
         }
};

}

YOU CAN PAY ME - https://paypal.me/LukaszW77?locale.x=pl_PL







środa, 1 kwietnia 2020

Calculations in files

Data in files: table_SQRT.txt and REPORT.txt

#include <iostream>
#include <fstream>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#define max_SIZE 1000
#define block_SIZE 50

using namespace std;

struct DATE
{
    double min_D;
    double max_D;
    double aver1;
    double aver2;
    double sum;
};

double sum_Table(double *tab, int t_Size)
{
    double sum=0.0;
    for(int i=0;i<t_Size;i++)
        sum+=tab[i];
    return sum;
}
double min_Table(double *tab, int t_Size)
{
    double min_T=tab[0];
    for(int i=0;i<t_Size;i++)
        if(min_T>tab[i])
          min_T=tab[i];
    return min_T;
}
double max_Table(double *tab, int t_Size)
{
    double max_T=tab[0];
    for(int i=0;i<t_Size;i++)
        if(max_T<tab[i])
         max_T=tab[i];
    return max_T;
}
double aver_Table(double *tab,  int t_Size)
{
    double aver_T;
    aver_T=sum_Table(tab,t_Size)/(1.0*t_Size);
    return aver_T;
}
double aver_min_max_Table(double *tab, int t_Size)
{
    double a_mm_T;
    a_mm_T=(max_Table(tab,t_Size)+(min_Table(tab,t_Size)))/2.0;
    return a_mm_T;
}
void sort_Tab(double *tab, int t_Size)
{
    int i,j;
    double k;
    for(i=1;i<t_Size;i++)
    {
        j=i;
        k=tab[j];
        while((j>0) && (tab[j-1]>k))
        {
            tab[j]=tab[j-1];
            j--;
        }
        tab[j]=k;
    }
}
bool is_First(int value)
{
    int sum=0;
    for(int i=1;i<value+1;i++)
        if(value%i==0)
         ++sum;
    if(sum==2)
        return true;
    else
        return false;
}
int *main_Tab;
double **sqrt_Table;
int main()
{
    int i,j,k;
    double l;
    fstream table_S,report_S;
    main_Tab=new int[max_SIZE];
    sqrt_Table=new double *[block_SIZE];
    for(i=0;i<block_SIZE;i++)
        sqrt_Table[i]=new double[block_SIZE];
    struct DATE *file_Date=new DATE[block_SIZE];
    srand(time(NULL));
    i=0;j=2;
    do
    {
        if(is_First(j))
        {
            main_Tab[i]=j;
            ++i;
        }
        ++j;

    }while(i<max_SIZE);
    for(i=0;i<block_SIZE;i++)
    {
        for(j=0;j<block_SIZE;j++)
        {
            k=rand()%max_SIZE;
            l=sqrt(1.00*main_Tab[k]);
            sqrt_Table[i][j]=l;
        }
    }
    for(i=0;i<block_SIZE;i++)
        sort_Tab(sqrt_Table[i],block_SIZE);
    for(i=0;i<block_SIZE;i++)
    {
        file_Date[i].min_D=min_Table(sqrt_Table[i],block_SIZE);
        file_Date[i].max_D=max_Table(sqrt_Table[i],block_SIZE);
        file_Date[i].aver1=aver_Table(sqrt_Table[i],block_SIZE);
        file_Date[i].aver2=aver_min_max_Table(sqrt_Table[i],block_SIZE);
        file_Date[i].sum=sum_Table(sqrt_Table[i],block_SIZE);
    }
    table_S.open("table_SQRT.txt",ios::out);
    for(i=0;i<block_SIZE;i++)
    {
        for(j=0;j<block_SIZE;j++)
        {
            table_S<<sqrt_Table[i][j];

        }
        table_S<<"\n";
    }
    table_S.close();
    report_S.open("REPORT.txt",ios::out);
    for(i=0;i<block_SIZE;i++)
    {
        report_S<<file_Date[i].max_D<<" - "<<file_Date[i].max_D<<" - "<<file_Date[i].aver1<<" - "<<file_Date[i].aver2<<" -"<<file_Date[i].sum;
        report_S<<"\n";

    }

    delete main_Tab;
    for(i=0;i<block_SIZE;i++)
        delete [] sqrt_Table[i];
    delete [] sqrt_Table;
    delete file_Date;
    getch();
    return 0;
}