Дан двумерный массив А. Расставить его столбцы в следующем порядке:первый,последний,второй,предпоследний и т.д - Pascal ABC
Формулировка задачи:
Решение задачи: «Дан двумерный массив А. Расставить его столбцы в следующем порядке:первый,последний,второй,предпоследний и т.д»
const n=3;m=7; type mas=array[1..n,1..m] of integer; var a:mas;j,mm:integer; procedure init(var x:mas); var i,j:integer; begin for i:=1 to n do for j:=1 to m do x[i,j]:=random(11) end; procedure print(x:mas;mm:string); var i,j:integer; begin writeln(mm,':'); for i:=1 to n do begin for j:=1 to m do write(x[i,j]:3); writeln end; writeln end; procedure insert(var x:mas;st1,st2:integer); var i,j,temp:integer; begin for i:= 1 to n do begin for j:=st2 downto st1+1 do begin temp:= a[i,j]; a[i,j]:=a[i,j-1]; a[i,j-1]:=temp end end end; begin init(a); print(a,'A'); j:=2; while j<=m do begin insert(a,j,m); inc(j,2) end; print(a,'A'''); end.
Объяснение кода листинга программы
В данном коде объявлены следующие переменные: n, m - числа, обозначающие размеры двумерного массива; mas - тип данных, представляющий двумерный массив; a - переменная, в которую записывается двумерный массив; j, mm - переменные, используемые для циклов в процедурах init и print; temp - временная переменная, используемая в процедуре insert для обмена значениями; i, j - переменные, используемые для внутренних циклов в процедуре insert. В процедуре init происходит инициализация значений двумерного массива случайными числами от 1 до 10. В процедуре print выводится содержимое двумерного массива в формате A: [1 2 3 4 5 6 7], где A - название строки, а числа в квадратных скобках - значения элементов массива. В процедуре insert происходит вставка элемента в двумерный массив. Элемент, который нужно вставить, определяется переменной st2, а позиция вставки - переменной st1. Вставка происходит следующим образом: для каждой строки массива, начиная со строки st2 и до конца строки (включительно), происходит проверка на наличие свободного элемента. Если свободный элемент есть, то его значение копируется в temp, значение текущего элемента заменяется на значение temp, а затем происходит переход к следующему свободному элементу. После выполнения всех операций вставки выводится содержимое двумерного массива во второй раз.