Тема: Допоможіть з сортуванням двовимірних масивів на мові С++.
⦁    Створити двовимірний масив. Заповнити його випадковими числами в діапазоні від 0 до 9 включно. Дати користувачеві можливість ввести кількість рядків і колонок, скільки він хоче побачити. Показати масив на екран. Користувач вибирає кількість зсувів і положення (вліво, вправо, вгору, вниз). Виконати зсув масиву і показати на екран отриманий результат. Зсув циклічний.
Наприклад, якщо ми маємо наступний масив:
1 2 0 4 5 3 
4 5 3 9 0 1
і користувач вибрав зсув на 2 розряди вправо, то ми отримаємо:
5 3 1 2 0 4
0 1 4 5 3 9
Організувати перевірку на:
⦁    користувач не може ввести більшу кількість рядків і колонок (які він хоче побачити), ніж загальна кількість рядків і колонок в масиві.
⦁    користувач може зробити вибір в діапазоні від 0 до 4 включно:
⦁    Вихід.
⦁    Зсув вліво.
⦁    Зсув вправо.
⦁    Зсув догори.
⦁    Зсув донизу.
⦁    при виборі зсуву вліво або вправо, користувач не може ввести кількість зсувів більше, ніж кількість колонок масиву;
⦁    при виборі зсуву догори або донизу, користувач не може ввести кількість зсувів більше, ніж кількість рядків масиву.
ВАЖЛИВО(зараз мені потрібно зсув вліво, ось мій код 1 рядок неправильно сортує а дальше все нормально)
#include <iostream>
#include <time.h>
#include <iomanip>
using namespace std;
void main() {
    int rows, cols, a = 0, cho, shift, tmp, j1 = 0;
    const int m = 100, n = 100, num = 10;
    int ar[m][n], ar1[num];
    cout << "Enter rows:";
    cin >> rows;
    cout << "Enter cols:";
    cin >> cols;
    srand(time(0));
    for (int i = 0; i < num; i++) {
        ar1[i] = a;
        a++;
    }
    a = 0;
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            ar[i][j] = rand() % num;
            a = ar[i][j];
            ar[i][j] = ar1[a];
        }
    }
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            cout << setw(5) << ar[i][j];
        }
        cout << "\n";
    }
    cout << "0 - exit \n1 - shift left \n2 - shift right \n3 - shift up \n4 - shift down \n";
    cin >> cho;
    for (;cho > 0 && cho <= 4;) {
        if (cho == 1) {
            cout << "shift:";
            cin >> shift;
            for (int a = 0; a < rows; a++) {
                for (int i = 0; i < rows; i++) {
                    for (int j = 0; j < cols; j++) {
                        if (a > 0) {
                            j1++;
                        }
                        if (j >= 0 && j < shift) {
                            for (int j = j1; j < cols - 1; j++) {
                                if (j1 == 0) {
                                    tmp = ar[i][j];
                                    ar[i][j] = ar[i][j + 1];
                                    ar[i][j + 1] = tmp;
                                }
                                if (j1 > 0) {
                                    tmp = ar[i][j];
                                    ar[i][j] = ar[i][j + 1];
                                    ar[i][j + 1] = tmp;
                                }
                            }
                        }
                    }
                }
            }
            for (int i = 0; i < rows; i++) {
                for (int j = 0; j < cols; j++) {
                    cout << setw(5) << ar[i][j];
                }
                cout << "\n";
            }
            cout << "0 - exit \n1 - shift left \n2 - shift right \n3 - shift up \n4 - shift down \n";
            cin >> cho;
        }
    }
    system("pause");
}