niedziela, 24 maja 2020

Sendfile (linux, g++)

#include <iostream>
#include <string>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/sendfile.h>
#include <sys/stat.h>

#define size_F 7

using namespace std;

string base_Proc[size_F]={"/proc/cpuinfo","/proc/version","/proc/meminfo","/proc/partitions","/proc/keys","/proc/cgroups","/proc/devices"};
string my_Files[size_F]={"CPU","VERSION","MEMINFO","PARTITIONS","KEYS","CGROUPS","DEVICES"};
int file_R[size_F],file_W[size_F];
struct stat* info_S;
off_t *offset_F;

int main(int argc, char **argv)
{
  info_S=new struct stat[size_F];
  offset_F=new off_t[size_F];
  for(int i=0;i<size_F;i++)
  {
      file_R[i]=open(base_Proc[i].c_str(),O_RDONLY);
      fstat(file_R[i],&info_S[i]);
      file_W[i]=open(my_Files[i].c_str(),O_WRONLY | O_CREAT,info_S[i].st_mode);
      sendfile(file_W[i],file_R[i],&offset_F[i],info_S[i].st_size);
      close(file_R[i]);
      close(file_W[i]);
  }
  delete offset_F;
  delete info_S;   
   
    return 0;
}



poniedziałek, 18 maja 2020

Arrays and saving data to a files (C++ fstream)

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


#define min_S 10
#define max_S 1000

using namespace std;


struct date_Tab
{
    int min_T;
    int max_T;
    int sum_T;
    double aver_T;
};

fstream file_Tab,file_Report;
string name_Files[2]={"f_Tab.txt","f_Report.txt"};
int** main_Tab;

int first_Values[max_S];


void sort_Tab(int* tab, int size_Tab)
{
    int i,j,k;
    for(i=1;i<size_Tab;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 i,sum=0;
    for(i=1;i<value+1;i++)
        if(value%i==0)
        ++sum;
    if(sum==2)
        return true;
    else
        return false;
}

void write_first_Tab()
{
    int i,j;
    i=0;
    j=2;
    do
    {
        if(is_First(j))
        {
            first_Values[i]=j;
            ++i;
        }
        ++j;

    }while(i<max_S);
}
int sum_Tab(int* tab, int size_T)
{
    int i,sum=0;
    for(i=0;i<size_T;i++)
        sum+=tab[i];
    return sum;
}
double aver_Tab(int* tab, int size_T)
{
    double aver;
    aver=(1.00*sum_Tab(tab,size_T))/(1.00*size_T);
    return aver;
}
int min_Tab(int* tab, int size_T)
{
    int i,min_T;
    min_T=tab[0];
    for(i=1;i<size_T;i++)
        if(min_T>tab[i])
         min_T=tab[i];
    return min_T;
}
int max_Tab(int* tab, int size_T)
{
    int i,max_T;
    max_T=tab[0];
    for(i=1;i<size_T;i++)
        if(max_T<tab[i])
         max_T=tab[i];
    return max_T;

}

int main()
{
   int i,j,k;
   struct date_Tab* values_Tab=new struct date_Tab[max_S];
   main_Tab=new int *[max_S];
    for(i=0;i<max_S;i++)
        main_Tab[i]=new int[min_S];
    srand(time(NULL));
    write_first_Tab();

    i=0;
    do
    {
        for(j=0;j<min_S;j++)
        {
            k=rand()%max_S;
            main_Tab[i][j]=first_Values[k];
        }
        ++i;

    }while(i<max_S);

    for(i=0;i<max_S;i++)
        sort_Tab(main_Tab[i],min_S);
    for(i=0;i<max_S;i++)
    {
        values_Tab[i].min_T=min_Tab(main_Tab[i],min_S);
        values_Tab[i].max_T=max_Tab(main_Tab[i],min_S);
        values_Tab[i].sum_T=sum_Tab(main_Tab[i],min_S);
        values_Tab[i].aver_T=aver_Tab(main_Tab[i],min_S);
    }
    file_Tab.open(name_Files[0].c_str(),ios::out);
    for(i=0;i<max_S;i++)
    {
        for(j=0;j<min_S;j++)
        {
            file_Tab<<main_Tab[i][j]<<"  ";
        }
        file_Tab<<"\n";
    }
    file_Tab.close();
    file_Report.open(name_Files[1].c_str(),ios::out);
    for(i=0;i<max_S;i++)
    {
        file_Report<<values_Tab[i].min_T<<" "<<values_Tab[i].max_T<<" "
        <<values_Tab[i].sum_T<<" "<<values_Tab[i].aver_T;
        file_Report<<"\n";
    }
    file_Report.close();

    for(i=0;i<max_S;i++)
        delete[] main_Tab[i];
    delete [] main_Tab;
    delete [] values_Tab;
    getch();
    return 0;
}


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

wtorek, 5 maja 2020

Tables and StringGrid - C++ Builder





__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 srand(time(NULL));

}
double __fastcall TForm1::min_Fraction(int *tab1, int size1, int *tab2, int size2)
{
 int i,sum1,sum2;
 double fraction;
 sum1=sum2=0;
 for(i=0;i<size1;i++)
  sum1+=tab1[i];
 for(i=0;i<size2;i++)
  sum2+=tab2[i];
 if(sum1<sum2)
  fraction=(1.0*sum1)/(1.0*sum2);
 else
  fraction=(1.0*sum2)/(1.0*sum1);
 return fraction;
}
double __fastcall TForm1::max_Fraction(int *tab1, int size1, int *tab2, int size2)
{
 int i,sum1,sum2;
 double fraction;
 sum1=sum2=0;
 for(i=0;i<size1;i++)
  sum1+=tab1[i];
 for(i=0;i<size2;i++)
  sum2+=tab2[i];
 if(sum1>sum2)
  fraction=(1.0*sum1)/(1.0*sum2);
 else
  fraction=(1.0*sum2)/(1.0*sum1);
 return fraction;
}
void __fastcall TForm1::sort_Array(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;
  }
 }
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::FormCreate(TObject *Sender)
{
 Label1->Caption=DateToStr(Date());
 int i,j;
 i=0;
 j=2;
 do
 {
  if(is_First(j))
  {
   temp_F[i]=j;
   ++i;
  }
  ++j;
 }while(i<100);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
 TDateTime DateTime = Time();
 Label2->Caption=TimeToStr(DateTime);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{

 int first_Tab1[10][10],first_Tab2[10][10],sum_Tab[10][20],i,j,k,l,r1,r2;
 double min_Fract[10],max_Fract[10];
 for(i=0;i<10;i++)
 {
  for(j=0;j<10;j++)
  {
   r1=rand()%100;
   r2=rand()%100;
   first_Tab1[i][j]=temp_F[r1];
   first_Tab2[i][j]=temp_F[r2];
  }
 }
 for(i=0;i<10;i++)
 {
  sort_Array(first_Tab1[i],10);
  sort_Array(first_Tab2[i],10);
 }
 for(i=0;i<10;i++)
 {
  min_Fract[i]=min_Fraction(first_Tab1[i],10,first_Tab2[i],10);
  max_Fract[i]=max_Fraction(first_Tab1[i],10,first_Tab2[i],10);
 }
 for(i=0;i<10;i++)
 {
  for(j=0,k=0,l=1;j<10;j++,k+=2,l+=2)
  {
   sum_Tab[i][k]=first_Tab1[i][j];
   sum_Tab[i][l]=first_Tab2[i][j];
  }
 }
 for(i=0;i<10;i++)
 {
  for(j=0;j<10;j++)
  {
   StringGrid1->Cells[i][j]=IntToStr(first_Tab1[j][i]);
   StringGrid2->Cells[i][j]=IntToStr(first_Tab2[j][i]);
  }
  StringGrid4->Cells[0][i]=FloatToStr(min_Fract[i]);
  StringGrid4->Cells[1][i]=FloatToStr(max_Fract[i]);

 }

 for(i=0;i<10;i++)
 {
  for(j=0;j<20;j++)
  {
   StringGrid3->Cells[j][i]=IntToStr(sum_Tab[i][j]);
  }
 }



}