Другие языки программирования и технологии

Помогите с обходим матрицы змейкой (нужно отредактировать формулу)

Помогите написать программу на Delphi - обход матрицы. Дана матрица вида: 1 3 6 2 5 8 4 7 9 Нужно получить результат: 1 2 3 4 5 6 7 8 9 У меня как пример есть матрица вида: 7 11 14 16 5 8 12 15 2 4 9 13 1 3 6 10 Там нужная мне часть кода имеет вид: for k:=1 to n do begin j:=n+1-k; for q:=1 to k do begin cells[q,j]:=s[m]; inc(m); j:=j+1; end end; for k:=n-1 downto 1 do begin j:=n+1-k; for q:=1 to k do begin cells[j,q]:=s[m]; inc(m); j:=j+1; end; end;
вот на с++.
нумерация массива от нуля.
= - присвоить
>= больше или равно
x++ тоже самое что x := ( x + 1 ) ;
х-- тоже самое что х := ( х - 1 );
&& логическое "и"
cout - вывод на экран.
раскрывающиеся и закрывающиеся скобки - бегины и энды.

int mtrx[n][n]; // матрица
int i,j,k; // счётчики

for ( i = 0 ; i < ( 2*n - 1 ) ; i++)
{
k = i ;
j = 0 ;
while ( k > = 0 )
{
if ( ( k < n ) && ( j < n ) )
{
cout << mtrx [ j ] [ k ] << " ";
};
k--;
j++;
};
};

ВБ
Виктор Бирючев
873
Лучший ответ
ммм, сортировка многомерных матриц вообще алгоритм сам по себе, скажем так, говнистый и для ботанов особого склада ума. Если вам чисто для учебы, можно использовать более ширпотребный алгоритм: переводим двухмерную матрицу в одномерную (читаем циклом элементы входной матрицы и пишем в линейный массив) , сортируем последний (например, пузырьком) , и пишем выходные данные в двухмерную матрицу (раз размеры сохраняются, задача упрощается до максимума) . Недостатки - неоптимизированость, использование лишней памяти (на компе такое погонять ещё можно, вот в микроконтроллере уже будет проблемнее)

P. S. Как вариант: N двойных циклов (где N - кол. во элементов) , где за одну двойную итерацию находится минимальный элемент, после чего ставится на активное место и внутренняя итерация уменьшается. Опять же - очень жирный алгоритм
Михаил Patrik
Михаил Patrik
3 737