Сортировка массива - Turbo Pascal (29081)
Формулировка задачи:
Помогите пожалуйста отсортировать двумерный массив по диагонали.
Дано целое число
N (0 <N <100).
Расположить в квадратной таблице размером NхN последовательность натуральных чисел 1, 2, ..., N2 таким образом, чтобы наименьшее число было в левом нижнем углу, а самое большое - в правом верхнем, а другие заполняли квадрат по диагоналям с левого верхнего угла к правому нижнему.Входные данные:
в единственной строке записано число N.Выходные данные:
вывести полученную таблицу.Пример:
Входные данные: 3 Выходные данные: 4 7 9 2 5 8 1 3 6Решение задачи: «Сортировка массива»
textual
Листинг программы
const nmax=20; var i,j,i1,n,m:integer; a:array[1..nmax,1..nmax] of integer; begin write('n = ');readln(n); m:=1; for i1:=n downto 1 do begin i:=i1;j:=1; while i<=n do begin a[i,j]:=m;inc(m); inc(i);inc(j); end end; for i1:=2 to n do begin j:=i1;i:=1; while j<=n do begin a[i,j]:=m;inc(m); inc(i);inc(j) end end; for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln end; readln end.
Объяснение кода листинга программы
- Переменная
n
инициализируется значением, введенным пользователем. - Переменная
m
инициализируется единицей. - В цикле
for
переменнойi1
отn
до1
происходит следующее:- Переменная
i
инициализируется значением переменнойi1
. - Переменная
j
инициализируется значением переменнойi1
. - Запускается цикл
while
с условиемi<=n
, который выполняется, покаi
меньше или равноn
. - Внутри цикла
while
переменнаяa[i,j]
присваивается значениюm
. - Переменная
m
инкрементируется. - Переменные
i
иj
инкрементируются.
- Переменная
- Повторяется шаг 3 для каждой переменной
i1
от2
доn
. - В цикле
for
переменнойi
от1
доn
происходит следующее:- Выводится значение переменной
a[i,j]
(записанное через точку с запятой) для каждой переменнойj
от1
доn
. - Выводится символ новой строки.
- Выводится значение переменной
- Запрашивается ввод с клавиатуры.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д