// Matrix.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <cmath>
#include <ctime>
#include <iostream>
int** CreateMatrix(int x, int y)
{
int** matrix = new int *[x];
for (int row = 0; row < x; ++row)
matrix[row] = new int[y];
return matrix;
}
void FillMatrix(int** mtx, int x, int y)
{
srand(time(nullptr));
for (int row = 0; row < x; ++row)
{
for (int col = 0; col < y; ++col)
{
mtx[row][col] = 1 + rand() % 9;
}
}
}
void PrintMatrix(int** mtx, int x, int y)
{
for (int row = 0; row < x; ++row)
{
for (int col = 0; col < y; ++col)
{
std::cout << mtx[row][col] << " ";
}
std::cout << std::endl;
}
}
void SortVector(int** vector, int y, int size)
{
bool flagsort = false;
do
{
flagsort = true;
for (int i = 0; i < size-1; ++i)
{
if (vector[i][y] > vector[i+1][y])
{
int t = vector[i][y];
vector[i][y] = vector[i+1][y];
vector[i+1][y] = t;
int j = i;
while (j > 0 && (vector[j-1][y]) > vector[j][y])
{
t = vector[j][y];
vector[j][y] = vector[j-1][y];
vector[j-1][y] = t;
--j;
}
flagsort = false;
}
}
}while(flagsort);
}
void SortColsMatrix(int** mtx, int x, int y)
{
for (int col = 0; col < y; ++col)
{
SortVector(mtx, col, x);
}
}
void FreeMatrix(int** &mtx, int x, int y)
{
for (int row = 0; row < x; ++row)
delete[] mtx[row];
delete[] mtx;
}
int main()
{
int x = 7;
int y = 5;
int** mtx = CreateMatrix(x,y);
FillMatrix(mtx, x, y);
std::cout << "Unsorted matrix: " << std::endl;
PrintMatrix(mtx, x, y);
std::cout << std::endl;
SortColsMatrix(mtx, x, y);
std::cout << "Sorted matrix: "<< std::endl;
std::cout << std::endl;
PrintMatrix(mtx, x, y);
FreeMatrix(mtx, x, y);
return 0;
}
Ly8gTWF0cml4LmNwcCA6IFRoaXMgZmlsZSBjb250YWlucyB0aGUgJ21haW4nIGZ1bmN0aW9uLiBQcm9ncmFtIGV4ZWN1dGlvbiBiZWdpbnMgYW5kIGVuZHMgdGhlcmUuCi8vCiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGN0aW1lPgojaW5jbHVkZSA8aW9zdHJlYW0+CgppbnQqKiBDcmVhdGVNYXRyaXgoaW50IHgsIGludCB5KSAKewoJaW50KiogbWF0cml4ID0gbmV3IGludCAqW3hdOwoJZm9yIChpbnQgcm93ID0gMDsgcm93IDwgeDsgKytyb3cpCgkJbWF0cml4W3Jvd10gPSBuZXcgaW50W3ldOwoJcmV0dXJuIG1hdHJpeDsKfQoKdm9pZCBGaWxsTWF0cml4KGludCoqIG10eCwgaW50IHgsIGludCB5KQp7CglzcmFuZCh0aW1lKG51bGxwdHIpKTsKCWZvciAoaW50IHJvdyA9IDA7IHJvdyA8IHg7ICsrcm93KQoJewoJCWZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHk7ICsrY29sKQoJCXsKCQkJbXR4W3Jvd11bY29sXSA9IDEgKyByYW5kKCkgJSA5OwoJCX0KCX0KfQoKdm9pZCBQcmludE1hdHJpeChpbnQqKiBtdHgsIGludCB4LCBpbnQgeSkKewoJZm9yIChpbnQgcm93ID0gMDsgcm93IDwgeDsgKytyb3cpCgl7CgkJZm9yIChpbnQgY29sID0gMDsgY29sIDwgeTsgKytjb2wpCgkJewoJCQlzdGQ6OmNvdXQgPDwgbXR4W3Jvd11bY29sXSA8PCAiICI7CgkJfQoJCXN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7Cgl9Cn0KCnZvaWQgU29ydFZlY3RvcihpbnQqKiB2ZWN0b3IsIGludCB5LCBpbnQgc2l6ZSkgCnsKCWJvb2wgZmxhZ3NvcnQgPSBmYWxzZTsKCWRvCgl7CgkJZmxhZ3NvcnQgPSB0cnVlOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZS0xOyArK2kpCgkJewoJCQlpZiAodmVjdG9yW2ldW3ldID4gdmVjdG9yW2krMV1beV0pCgkJCXsKCQkJCWludCB0ID0gdmVjdG9yW2ldW3ldOwoKCQkJCXZlY3RvcltpXVt5XSA9IHZlY3RvcltpKzFdW3ldOwoJCQkJdmVjdG9yW2krMV1beV0gPSB0OwoKCQkJCWludCBqID0gaTsKCQkJCXdoaWxlIChqID4gMCAmJiAodmVjdG9yW2otMV1beV0pID4gdmVjdG9yW2pdW3ldKQoJCQkJewoJCQkJCXQgPSB2ZWN0b3Jbal1beV07CgkJCQkJdmVjdG9yW2pdW3ldID0gdmVjdG9yW2otMV1beV07CgkJCQkJdmVjdG9yW2otMV1beV0gPSB0OwoJCQkJCS0tajsKCQkJCX0KCQkJCWZsYWdzb3J0ID0gZmFsc2U7CgkJCX0KCQl9Cgl9d2hpbGUoZmxhZ3NvcnQpOwp9Cgp2b2lkIFNvcnRDb2xzTWF0cml4KGludCoqIG10eCwgaW50IHgsIGludCB5KQp7Cglmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB5OyArK2NvbCkKCXsKCQlTb3J0VmVjdG9yKG10eCwgY29sLCB4KTsKCX0KfQoKdm9pZCBGcmVlTWF0cml4KGludCoqICZtdHgsIGludCB4LCBpbnQgeSkKewoJZm9yIChpbnQgcm93ID0gMDsgcm93IDwgeDsgKytyb3cpCgkJZGVsZXRlW10gbXR4W3Jvd107CglkZWxldGVbXSBtdHg7Cn0KCmludCBtYWluKCkKewoJaW50IHggPSA3OwoJaW50IHkgPSA1OwoJaW50KiogbXR4ID0gQ3JlYXRlTWF0cml4KHgseSk7CglGaWxsTWF0cml4KG10eCwgeCwgeSk7CgoJc3RkOjpjb3V0IDw8ICJVbnNvcnRlZCBtYXRyaXg6ICIgPDwgc3RkOjplbmRsOwoJUHJpbnRNYXRyaXgobXR4LCB4LCB5KTsKCXN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CgoJU29ydENvbHNNYXRyaXgobXR4LCB4LCB5KTsKCQoJc3RkOjpjb3V0IDw8ICJTb3J0ZWQgbWF0cml4OiAiPDwgc3RkOjplbmRsOwoJc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKCVByaW50TWF0cml4KG10eCwgeCwgeSk7CgoJRnJlZU1hdHJpeChtdHgsIHgsIHkpOwoJCglyZXR1cm4gMDsKfQo=