Допоможіть будь-ласка. Потрібно всі елементи кожної непарної діагоналі, що паралельні побічній діагоналі квадратної матриці. Відсортувати за спаданням. Методом сортування Шелла.
#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;
}