Дан одномерный массив, сформировать из него двухмерный отсортированный змейкой - 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].

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы