Отсортировать диагонали, параллельные побочной по возрастанию с помощью сортировки вставками.
Вот код,нужно сделать чтобы сортировались диагонали параллельные побочной, а не главной. помогите пожалуйста.
Код: Выделить всё
#include <fstream>
#include <iomanip>
#include <iostream>
using namespace std;
ifstream in("input.txt");
ofstream out("output.txt");
void sort(int *a, int n)
{
int temp;
int i, j;
for (i = 1; i < n; i++)
{
j = i;
while (j > 0 && a[j] < a[j - 1])
{
temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
j--;
}
}
}
int main()
{
int n, i, j;
in >> n;
int** a = new int*[n];
for (i = 0; i < n; i++)
{
a[i] = new int[n];
for (int j = 0; j<n; j++)
in >> a[i][j];
}
int *diag1;
diag1 = new int[n + 1];
for (i = n - 2; i >= 0; i--)
{
for (j = 0; j<n - i; j++) diag1[j] = a[j][i + j];
sort(diag1, n - i);
for (j = 0; j<n - i; j++) a[j][i + j] = diag1[j];
}
int *diag2;
diag2 = new int[n + 1];
for (i = 1; i<n - 1; i++)
{
for (j = i; j <= n - 1; j++) diag2[j] = a[j][j - i];
sort(diag2, n - i);
for (j = i; j <= n - 1; j++) a[j][j - i] = diag2[j];
}
{
out << n << endl;
for (int i = 0; i<n; i++, out << endl)
for (j = 0; j<n; j++)
out << setw(5) << left << a[i][j];
}
in.close();
out.close();
for (int i = 0; i < n; ++i)
delete[] a[i];
delete[] a;
return 0;
}