Дан одномерный массив, сформировать из него двухмерный отсортированный змейкой - Pascal ABC
Формулировка задачи:
Начиная с правого нижнего угла вертикально
Решение задачи: «Дан одномерный массив, сформировать из него двухмерный отсортированный змейкой»
textual
Листинг программы
uses crt; var mas1:array [1..20] of integer; mas2:array [1..2,1..10] of integer; i,j,k:integer; a,b:boolean; BEGIN write('mas1: '); for i:=1 to 20 do begin mas1[i]:=random(10); write(mas1[i],' '); end; writeln; j:=2; i:=11; k:=0; a:=false; b:=false; while k<20 do begin inc(k); a:=not a; if a then begin dec(i); end else begin b:= not b; end; if b then begin j:=1; end else begin j:=2; end; mas2[j,i]:=mas1[k]; end; writeln('mas2:'); for i:=1 to 2 do begin for j:=1 to 10 do write(mas2[i,j],' '); writeln; end; END.
Объяснение кода листинга программы
В данном коде используется язык программирования Pascal ABC. Задача заключается в преобразовании одномерного массива mas1 в двухмерный массив mas2, где каждый элемент mas2[i,j] соответствует элементу mas1[k]. Переменные:
- mas1: одномерный массив из 20 элементов целых чисел (изначально заполняется случайными числами от 0 до 9)
- mas2: двухмерный массив размером 2x10
- i, j, k: индексы для перемещения по массиву mas1
- a, b: булевы переменные для определения направления движения в массиве mas1 Код начинается с инициализации переменной mas1 и вывода его элементов на экран. Затем устанавливаются начальные значения переменных i, j, k и a, b. Далее идет цикл while, который выполняется до тех пор, пока значение переменной k меньше 20. Внутри цикла происходит следующее:
- inc(k): увеличение значения k на единицу
- a:=not a: инверсия значения переменной a (для движения в обратном направлении)
- if a then — dec(i): уменьшение значения i на единицу (если a=true, то перемещаемся влево) — end
- else — if b then — j:=1: установка значения j равным 1 (если b=true, то перемещаемся вправо) — end — j:=2: установка значения j равным 2 (если b=false, то перемещаемся вправо) — end
- mas2[j,i]:=mas1[k]: копирование значения mas1[k] в mas2[j,i] После завершения цикла while выводится двухмерный массив mas2 на экран. Каждый элемент mas2[i,j] соответствует элементу mas1[k].