Вывести на экран значения массива по спирали. Будем понимать под этим следующее. Если массив состоит из 100 элементов, то выводить по 10 элементов в каждой строке, при этом каждая вторая строка должна выводиться "задом наперед": сначала последние элементы строки, а затем первые.
Как, зная строку, определить индекс первого числа этой строки по массиву? Надо умножить номер строки на 10 (если каждая строка содержит 10 элементов) и вычесть 9. Например, вторая строка начинается с 11-го элемента: 2 * 10 - 9 = 11.
var arr: array[1..100] of integer; i, j: byte; begin randomize; for i:=1 to 100 do arr[i] := random(50); // обычный вывод for i:=1 to 100 do begin write(arr[i]:4); if i mod 10 = 0 then writeln; end; writeln; // вывод по спирали for i:=1 to 10 do if i mod 2 0 then begin for j:=i*10-9 to i*10 do write(arr[j]:4); writeln; end else begin for j:=i*10 downto i*10-9 do write(arr[j]:4); writeln; end; end.
Пример выполнения программы:
10 26 2 30 45 5 22 15 12 9 3 10 44 27 8 9 19 14 0 25 41 34 38 3 5 39 13 26 45 35 9 0 32 17 39 36 41 26 46 2 42 26 32 3 49 44 32 33 41 36 47 44 2 41 31 5 18 7 41 2 34 45 28 0 21 9 41 28 19 21 19 4 32 18 25 17 16 1 9 41 49 28 49 46 35 21 15 12 38 16 29 0 20 49 18 21 21 26 6 21 10 26 2 30 45 5 22 15 12 9 25 0 14 19 9 8 27 44 10 3 41 34 38 3 5 39 13 26 45 35 2 46 26 41 36 39 17 32 0 9 42 26 32 3 49 44 32 33 41 36 2 41 7 18 5 31 41 2 44 47 34 45 28 0 21 9 41 28 19 21 41 9 1 16 17 25 18 32 4 19 49 28 49 46 35 21 15 12 38 16 21 6 26 21 21 18 49 20 0 29
Последние комментарии
17 часов 46 мин. назад
18 часов 53 мин. назад
1 день 5 часов назад
3 дня 11 часов назад
5 дней 5 часов назад
5 дней 21 час назад
6 дней 7 часов назад
6 дней 8 часов назад
6 дней 20 часов назад
1 неделя 10 часов назад