Допоможіть будь-ласка. Потрібно всі елементи кожної непарної діагоналі, що паралельні побічній діагоналі квадратної матриці. Відсортувати за спаданням. Методом сортування Шелла.
#include <time.h>
#include <stdlib.h>
#include <iostream>
#include <stdio.h>
#include <windows.h>
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("cls");
srand(time(NULL));
int pi, pj, i, j=0, k, s=0, n, d, x=1, nm, q=0;
cout << "mass[n][n] n = ";
cin >> n;
nm=n*n;
int matr[n][n], mass[nm];
cout << endl << endl;
for (pi = 0; pi < n; pi++)
{
    for (pj = 0; pj < n; pj++)
    {
        q++;
        matr[pi][pj]=mass[nm]=rand()%100-50;
        printf("%3.0d  ", matr[pi][pj]);
    }
cout << endl;
}
for (int i = 0; i < n+n-1; i++)
{
    if (n+n-1%2==0)
    {
        if (x<(n+n-1)/2)
        {
            if (i%2==0)
            {
                for (; j < x; j++)
                x++;
            }
            else
            {
                for (; j < x; j++)
                {
                    swap(mass[j], mass[j-d]);
                }
                x++;                
            }
        }
        else
        {
            if (i%2==0)
            {
                for (; j < x; j++)
                x--;
            }
            else
            {
                for (; j < x; j++)
                {
                    swap(mass[j], mass[j-d]);
                }
                x--;
            }
        }
    }
    else
    {
        if (x<=(n+n-1)/2)
        {
            if (i%2==0)
            {
                for (; j < x; j++)
                x++;
            }
            else
            {
                for (; j < x; j++)
                {
                    swap(mass[j], mass[j-d]);
                }
                x++;                
            }
        }
        else
        {
            if (i%2==0)
            {
                for (; j < x; j++)
                x--;
            }
            else
            {
                for (; j < x; j++)
                {
                    swap(mass[j], mass[j-d]);
                }
                x--;
            }
        }
    }
}
for (int z = 0; z < nm; z++)
{
    for (k = 0; k < (n+n-1); k++)
    {
        {
            if (k<n)
            {
                    pi=k;
                pj=0;
            }
            else
            {
                pi=n-1;
                pj=k-n+1;
               }
               for (; (0<=pi)&(pj<n); pi--, pj++)
              {
                for (i = 0; i < nm; i++)
                {
                     matr[pi][pj]=mass[z];
                   }
              }
        }
        
    }
}
cout << endl;
for (pi = 0; pi < n; pi++)
{
    for (pj = 0; pj < n; pj++)
    {
        printf("%3.0d  ", matr[pi][pj]);
    }
cout << endl;
}
cout << endl;
system("pause");
return 0;
}