Я искал некоторые веб-сайты, но я не мог найти ответ на свою проблему.Сортировка массива по диагонали
Вот мой код:
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <time.h>
#include<iomanip>
#include<array>
#include <algorithm>
using namespace std;
const int AS = 6;
int filling(void);
void printing(int[AS][AS]);
int forsorting(int[][AS], int);
int main()
{
int funny = 0;
int timpa = 0;
int counter = 0;
int Array[AS][AS];
srand(time(0));
for (int i = 0; i<AS; i++)
{
for (int j = 0; j<AS; j++)
Array[i][j] = filling();
}
cout << "The unsorted array is" << endl << endl;
printing(Array);
cout << "The sorted array is" << endl << endl;
for (int il = 0; il<AS; il++)
{
for (int elle = 0; elle<AS; elle++)
Array[il][elle] =forsorting(Array, funny);
printing(Array);
}
system("PAUSE");
return 0;
}
int filling(void)
{
int kira;
kira = rand() % 87 + 12;
return kira;
}
void printing(int Array[AS][AS])
{
int counter = 0;
for (int i = 0; i<AS; i++)
{
for (int j = 0; j<AS; j++)
{
cout << setw(5) << Array[i][j];
counter++;
if (counter%AS == 0)
cout << endl << endl;
}
}
}
int forsorting(int Array[AS][AS], int funny)
{
int c, tmp, x;
int dice = 0;
int Brray[AS*AS];
int timpa = 0;
int super = 0;
//Transofrming Array[][] into Brray[]
for (int i = 0; i < AS; i++)
{
for (int k = 0; k < AS; k++)
{
Brray[timpa] = Array[i][k];
timpa++;
}
}
//Bubble sorting in Brray[]
for (int passer = 1; passer <= AS-1; passer++)
{
for (int timon = 1; timon <= AS-1; timon++)
{
if (Brray[timpa]>Brray[timpa + 1])
{
super = Brray[timpa];
Brray[timpa] = Brray[timpa + 1];
Brray[timpa + 1] = super;
}
}
}
//Transforming Brray[] into Array[][]
for (int e = 0; e<AS; e++)
{
for (int d = 0; d<AS; d++)
{
Brray[dice] = Array[e][d];
dice++;
}
}
***There's a part missing here***
}
Что я должен сделать, написать программу, используя 3 функции.
- 1-функция не будет заполнить мой 2D массив случайным образом (без проблем с этой частью)
- 2-ая функция будет печатать несортированный массив на экране (без проблем с этой частью)
- и 3-й функции буду сортировать мой массив по диагонали, как показано на рисунке:
Затем нужно вызвать 2-ую функцию для печати отсортированного массива. Моя проблема связана с 3-й функцией, когда я превратил свой 2D-массив в 1D-массив и отсортировал его с помощью сортировки Bubble, но то, что я не могу сделать, это вернуть его в двумерную диагональ 2D-массива.
Я не получаю картину. Он не выглядит отсортированным в соответствии со стрелками на изображении. '... 2 2 3 3 5 4 5 ...' –
@Andrey - Я подозреваю, что это ошибка на картинке. Или, может быть, это показывает несортированный массив. В любом случае, это важные стрелки. –
извините за изображение его исправлено – Kauto