czwartek, 7 sierpnia 2025

Using a specific shuffle function in a class. C++ example (g++)

 #include <iostream>

#include <vector>

#include <fstream>

#include <algorithm>

#include <string>

#include <random>


using namespace std;


class rs_with_Shuffle

{

    private:

        int x,y,z;


        string file_Name;

        void i_Sort(int* tab, int s);

    public:

        int **tab;

        rs_with_Shuffle(int x, int y, int z, string fn);

        ~rs_with_Shuffle();

        void run_Rand();

        void write_Tab();

        void Save();



};

rs_with_Shuffle::rs_with_Shuffle(int a, int b, int c, string fn)

{

  x=a;

  y=b;

  z=c;

  file_Name=fn;


  tab=new int* [x];

  for(int i=0;i<x;i++)

    tab[i]=new int[y];

}

rs_with_Shuffle::~rs_with_Shuffle()

{

    for(int i;i<x;i++)

    {

        delete [] tab[i];

        delete [] tab;

    }

}

void rs_with_Shuffle::i_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 rs_with_Shuffle::run_Rand()

{

  std::random_device rd;

  std::mt19937 gen(rd());

  vector <int> all;

  int x1=1;

  int y1=z;

   for(int i=x1;i<y1;i++)

    all.push_back(i);

    std::shuffle(all.begin(),all.end(),gen);

   x1=0;

   for(int i=0;i<x;i++)

   {

    for(int j=0;j<y;j++)

    {

     tab[i][j]=all[x1];

     ++x1;

    }

   }

     for(int i=0;i<x;i++)

        i_Sort(tab[i],y);


}

void rs_with_Shuffle::write_Tab()

{

    for(int i=0;i<x;i++)

    {

        for(int j=0;j<y;j++)

        {

            cout<<tab[i][j]<<"  ";

        }

        cout<<"\n";

    }

}

void rs_with_Shuffle::Save()

{


    fstream file(file_Name,ios::out);

    if(file.good())

    {

     for(int i=0;i<x;i++)

    {

        for(int j=0;j<y;j++)

        {

            file<<tab[i][j]<<"  ";

            file.flush();

        }

        file<<"\n";



    }

    }

}

int main()

{

    rs_with_Shuffle my_Shuffle(4,10,99,"date.txt");

    my_Shuffle.run_Rand();

    my_Shuffle.write_Tab();

    my_Shuffle.Save();

    return 0;

}