
#include <iostream>
#include <math.h>
#include <time.h>
#include<iomanip>
#include<array>
#include <algorithm>

using namespace std;
const int AS = 6;
void FillingRandomly(int (*)[AS]);
void printing(int (*)[AS]);
void forsorting(int(*)[AS], int);
void swap(int * const, int * const);  
int c;

int main()

{
	int funny = 0;
	int timpa = 0;
	int counter = 0;
	int Array[AS][AS];
	srand(time(0));


	FillingRandomly(Array);	
	

	cout << "The unsorted array is" << endl << endl;

	printing(Array);


	cout << "The sorted array is" << endl << endl;



	forsorting(Array, funny);

		printing(Array);

	
	
	system("PAUSE");


	return 0;

}

void FillingRandomly(int *Array)
{*Array=rand()%87 +12;
*Array++;
		}



void printing(int *ArrayPtr)
{
	int counter = 0;
	while(*ArrayPtr<AS*AS)
	{
	cout<<*ArrayPtr;
			*ArrayPtr++;
			if (*ArrayPtr%AS == 0)
				cout << endl << endl;
	}	
}

void forsorting(int *Array[AS][AS], int funny)
{

    int w=0;
	int dice = 0;
	int Brray[AS*AS];
	int super = 0;
	int space=0;
	
	

	//Transofrming Array[][] into Brray[]
	for (int i = 0; i < AS; i++)
	{
		for (int k = 0; k < AS; k++)
		{
			Brray[space] = *Array[k][i];
			space++;
		}
	}


	//Sorting Brray[]

{

 for (int pass = 0; pass < AS*AS - 1; pass++) {
        
         for (int k = 0; k < AS*AS - 1; k++) {
            int temp;
             if ( Array[k] > Array[k + 1] ) {
                swap( &Array[k], &Array[k + 1]);
             } 
          } 
       } 
    } 
    void swap(int * const element1Ptr, int * const element2Ptr)
    {
       int hold = *element1Ptr;
       *element1Ptr = *element2Ptr;
       *element2Ptr = hold;
    } 

	//Transforming Brray[] into sorted Array[][]
	
w=0;
for (int j=0;j<AS;j++) {
    for (int i=0;i<AS;i++)
    {
      *Array[j][i] = Brray[w++];
    }
    
}
}
