Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Двумерные массивы.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
483 Кб
Скачать
☆

Программа

Program Problem4;

const

n = 5; m = 6;

type

s = array[1..m] of integer;

t = array[1..n] of s;

u = array[1..n*m] of integer;

var

a : t; b : u;

i : integer;

{----------------------------------------------------------------------------------------}

Procedure create_two(n, m : integer; var a : t);

var

i, j : integer;

begin

writeln('Заданный двумерный массив целых чисел');

randomize;

for i := 1 to n do

begin

for j := 1 to m do

begin

a[i, j] := random(201) - 100;

write(a[i, j]:6, ' ')

end;

writeln

end

end;

{----------------------------------------------------------------------------------------}

Procedure sprain(n, m : integer; a : t; var b : u);

var

k, i, j : integer;

begin

k := 0;

for i := 1 to n do

for j := 1 to m do

begin

k := k + 1;

b[k] := a[i, j]

end

end;

{----------------------------------------------------------------------------------------}

begin

create_two(n, m, a);

sprain(n, m, a, b);

writeln('Одномерный массив, полученный из двумерного');

for i := 1 to n*m do write(b[i], ' '); writeln

end.

Пример 5. Сформировать матрицу размерности из случайных чисел от 1 до 100. Расположить их в порядке возрастания по следующей схеме (см. рис. 54):

Рис. 54

Алгоритм

Эта задача является логическим продолжением задачи примера 4. В самом деле, чтобы расположить элементы массива по такой схеме и выполнить условие задачи - упорядочить элементы в порядке возрастания, надо:

1) "растянуть" матрицу в одномерный массив;

2) упорядочить полученный массив в порядке возрастания;

3) "выбрать" из полученного одномерного массива столбцы с расположением элементов по предложенной схеме.

Первый пункт этого алгоритма выполнить нетрудно, основываясь на предыдущем примере.

Упорядочить полученный одномерный массив можно с помощью процедуры быстрой сортировки.

Третий пункт является для нас новым. Чтобы выполнить его, надо заметить следующую закономерность. Если столбец двумерного массива имеет нечетный номер, т. е. 1-й, 3-й, 5-й и т.д., тогда элементы располагаются в порядке возрастания от 1-го элемента столбца до n-го - "сверху вниз".

Если номера столбцов четные, т. е. 2-й, 4-й, 6-й и т. д., тогда элементы располагаются от n-го до 1-го - "снизу вверх".

Теперь можно составить схему программы.

Схема программы

Program Problem5;

Описание массивов и переменных.

Процедура быстрой сортировки.

begin

Создание двумерного массива с помощью функции случайных чисел и одновременное "растягивание" в одномерный массив, а также вывод полученной матрицы на экран.

Вызов процедуры быстрой сортировки и сортировка одномерного массива в порядке возрастания.

v := 1; - счетчик столбцов матрицы, получаемой из отсортированного одномерного массива;

k := 0; - счетчик элементов одномерного массива;

repeat

if v mod 2 <> 0 then

for i := 1 to n do

begin

k := k + 1;

a[i, v] := b[k]

end

else

for i := n downto 1 do

begin

k := k + 1;

a[i, v] := b[k]

end;

v := v + 1

until v = m + 1;

Вывод массива на экран.

end.