Тема: допоможіть з сортуванням в матриці
Характеристикою стовпця прямокутної матриці цілих чисел розмірністю (k  n) назвемо суму модулів його від’ємних непарних елементів. 
1.    Переставляючи стовпці заданої матриці, розташувати їх відповідно до зростання характеристик (оформити у вигляді void-функції).
2.    Знайти суму елементів в тих стовпцях, які містять хоч би один від’ємний елемент (оформити у вигляді int-функції).
#include <iostream>
#include <iomanip>
using namespace std;
void Create(int** a, const int rowCount, const int colCount,
            const int Low, const int High, int i, int j)
{
    a[i][j] = Low + rand() % (High - Low + 1);
    if (j < colCount - 1)
        Create(a, rowCount, colCount, Low, High, i, j + 1);
    else
    if (i < rowCount - 1)
        Create(a, rowCount, colCount, Low, High, i + 1, 0);
}
void Input(int** a, const int rowCount, const int colCount, int i, int j)
{
    cout << "a[" << i << "][" << j << "] = ";
    cin >> a[i][j];
    if (j < colCount - 1)
        Input(a, rowCount, colCount, i, j + 1);
    else
    if (i < rowCount - 1)
    {
        cout << endl;
        Input(a, rowCount, colCount, i + 1, 0);
    }
    else
        cout << endl;
}
void Print(int** a, const int rowCount, const int colCount, int i, int j)
{
    cout << setw(4) << a[i][j];
    if (j < colCount - 1)
        Print(a, rowCount, colCount, i, j + 1);
    else
    if (i < rowCount - 1)
    {
        cout << endl;
        Print(a, rowCount, colCount, i + 1, 0);
    }
    else
        cout << endl << endl;
}
int Character(int** a, const int n, const int i, int j, int sum)
{
    if (a[i][j] < 0 && a[i][j] % 2 != 0)
        sum += a[i][j];
    if (j < n - 1)
        Character(a, n, i, j + 1, sum);
    else
        return sum;
}
void Change(int** a, const int col1, const int col2, const int rowCount, int tmp, int i)
{
    tmp = a[i][col1];
    a[i][col1] = a[i][col2];
    a[i][col2] = tmp;
    if (i < rowCount - 1)
        Change(a, col1, col2, rowCount, tmp, i + 1);
}
void Replace(int** a, const int k, const int n, int i0, int i1)
{
    if (Character(a, n, i0, 0, 0) < Character(a, n, i1, 0, 0))
        Change(a, i0, i1, n, 0, 0);
    if (i0 < k - 1)
        Replace(a, k, n, i0 + 1, i1);
    else
    if (i1 < k - 1)
        Replace(a, k, n, i0, i1 + 1);
}
int main()
{
    srand((unsigned)time(NULL));
    int Low = -10;
    int High = 30;
    int k, n;
    cout << "rowCount = "; cin >> k;
    cout << "colCount = "; cin >> n;
    int** a = new int* [k];
    for (int i = 0; i < k; i++)
        a[i] = new int[n];
    Create(a, k, n, Low, High, 0, 0);
    //Input(a, k, n, 0, 0);
    cout << "a[" << k << "][" << n << "] = " << endl;
    Print(a, k, n, 0, 0);
    Replace(a, k, n, 0, 0);
    cout << "Матриця, розсташована відповідно до зростання характеристик " << endl;
    cout << "a[" << k << "][" << n << "] = " << endl;
    Print(a, k, n, 0, 0);
    for (int i = 0; i < k; i++)
        delete[] a[i];
    delete[] a;
    return 0;
}