#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)
{
int i = 0;
int buf;
char swap_cnt = 0;
while (i < size)
{
if (i + 1 != size && vector[i][y] > vector[i + 1][y])
{
buf = vector[i][y];
vector[i][y] = vector[i + 1][y];
vector[i + 1][y] = buf;
swap_cnt = 1;
}
i++;
if (i == size && swap_cnt == 1)
{
swap_cnt = 0;
i = 0;
}
}
}
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;
}
I2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3RpbWU+CiNpbmNsdWRlIDxpb3N0cmVhbT4KIAppbnQqKiBDcmVhdGVNYXRyaXgoaW50IHgsIGludCB5KSAKewoJaW50KiogbWF0cml4ID0gbmV3IGludCAqW3hdOwoJZm9yIChpbnQgcm93ID0gMDsgcm93IDwgeDsgKytyb3cpCgkJbWF0cml4W3Jvd10gPSBuZXcgaW50W3ldOwoJcmV0dXJuIG1hdHJpeDsKfQogCnZvaWQgRmlsbE1hdHJpeChpbnQqKiBtdHgsIGludCB4LCBpbnQgeSkKewoJc3JhbmQodGltZShudWxscHRyKSk7Cglmb3IgKGludCByb3cgPSAwOyByb3cgPCB4OyArK3JvdykKCXsKCQlmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB5OyArK2NvbCkKCQl7CgkJCW10eFtyb3ddW2NvbF0gPSAxICsgcmFuZCgpICUgOTsKCQl9Cgl9Cn0KIAp2b2lkIFByaW50TWF0cml4KGludCoqIG10eCwgaW50IHgsIGludCB5KQp7Cglmb3IgKGludCByb3cgPSAwOyByb3cgPCB4OyArK3JvdykKCXsKCQlmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB5OyArK2NvbCkKCQl7CgkJCXN0ZDo6Y291dCA8PCBtdHhbcm93XVtjb2xdIDw8ICIgIjsKCQl9CgkJc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKCX0KfQogCnZvaWQgU29ydFZlY3RvcihpbnQqKiB2ZWN0b3IsIGludCB5LCBpbnQgc2l6ZSkgCnsKCWludCBpID0gMDsKCWludCBidWY7CgljaGFyIHN3YXBfY250ID0gMDsKCXdoaWxlIChpIDwgc2l6ZSkKCXsKCQlpZiAoaSArIDEgIT0gc2l6ZSAmJiB2ZWN0b3JbaV1beV0gPiB2ZWN0b3JbaSArIDFdW3ldKQoJCXsKCQkJYnVmID0gdmVjdG9yW2ldW3ldOwoJCQl2ZWN0b3JbaV1beV0gPSB2ZWN0b3JbaSArIDFdW3ldOwoJCQl2ZWN0b3JbaSArIDFdW3ldID0gYnVmOwoJCQlzd2FwX2NudCA9IDE7CgkJfQoJCWkrKzsKCQlpZiAoaSA9PSBzaXplICYmIHN3YXBfY250ID09IDEpCgkJewoJCQlzd2FwX2NudCA9IDA7CgkJCWkgPSAwOwoJCX0KCX0KfQogCnZvaWQgU29ydENvbHNNYXRyaXgoaW50KiogbXR4LCBpbnQgeCwgaW50IHkpCnsKCWZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHk7ICsrY29sKQoJewoJCVNvcnRWZWN0b3IobXR4LCBjb2wsIHgpOwoJfQp9CiAKdm9pZCBGcmVlTWF0cml4KGludCoqICZtdHgsIGludCB4LCBpbnQgeSkKewoJZm9yIChpbnQgcm93ID0gMDsgcm93IDwgeDsgKytyb3cpCgkJZGVsZXRlW10gbXR4W3Jvd107CglkZWxldGVbXSBtdHg7Cn0KIAppbnQgbWFpbigpCnsKCWludCB4ID0gNzsKCWludCB5ID0gNTsKCWludCoqIG10eCA9IENyZWF0ZU1hdHJpeCh4LHkpOwoJRmlsbE1hdHJpeChtdHgsIHgsIHkpOwogCglzdGQ6OmNvdXQgPDwgIlVuc29ydGVkIG1hdHJpeDogIiA8PCBzdGQ6OmVuZGw7CglQcmludE1hdHJpeChtdHgsIHgsIHkpOwoJc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKIAoJU29ydENvbHNNYXRyaXgobXR4LCB4LCB5KTsKIAoJc3RkOjpjb3V0IDw8ICJTb3J0ZWQgbWF0cml4OiAiPDwgc3RkOjplbmRsOwoJc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKCVByaW50TWF0cml4KG10eCwgeCwgeSk7CiAKCUZyZWVNYXRyaXgobXR4LCB4LCB5KTsKIAoJcmV0dXJuIDA7Cn0=