Сортировка массива - 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. - Выводится символ новой строки.
- Выводится значение переменной
- Запрашивается ввод с клавиатуры.