Объединить элементы двух массивов в один по неубыванию - Turbo Pascal
Формулировка задачи:
Заданы два массива с N и M элементами, упорядоченными по неубыванию, объединить элементы этих массивов в один массив так, чтобы элементы снова оказались упорядоченными по неубыванию.
Не получается составить код Паскаль
Решение задачи: «Объединить элементы двух массивов в один по неубыванию»
textual
Листинг программы
- const
- Max = 10;
- type
- inDat = array [1..Max] of integer;
- outDat = array [1..Max * 2] of integer;
- var
- n, m, o, x, y: integer;
- Ax, Ay: inDat;
- Z: outDat;
- procedure printMas;//вывод массивов на экран
- var n:integer;
- begin
- Writeln('Массив X - ');
- for n := 1 to Max do write(Ax[n]:4);
- writeln;
- Writeln('Массив Y - ');
- for n := 1 to Max do write(AY[n]:4);
- writeln;
- end;
- begin
- randomize;
- for n := 1 to Max do //создаем два случайных массива
- begin
- Ax[n] := 50 - random(101);
- Ay[n] := 50 - random(101);
- end;
- printMas;
- for n := 1 to Max - 1 do //сортировка "пузырьком"
- for m := 1 to Max - n do
- begin
- if Ax[m] > Ax[m + 1] then
- begin
- x := Ax[m];
- Ax[m] := Ax[m + 1];
- Ax[m + 1] := x;
- end;
- if Ay[m] > Ay[m + 1] then
- begin
- y := Ay[m];
- Ay[m] := Ay[m + 1];
- Ay[m + 1] := y;
- end;
- end;
- writeln('Отсортированные массивы:');
- printMas;
- n := 1;m := 1;o := 1;//задаем счетчики
- while (n <= Max) or (m <= Max) do
- begin
- if n > max then //если один массив до конца дочитан то читаем другой до конца
- begin
- Z[o] := Ay[m];
- inc(m);
- inc(o);
- end else
- if m > Max then //и наоборот
- begin
- Z[o] := Ax[n];
- inc(n);
- inc(o);
- end;
- if (m <= Max) and (n <= Max) then //а пока ни один не дочитан до конца
- begin
- if Ax[n] > Ay[m] then //сравниваем элементы массивов и меньший пишем в третий массив
- begin
- Z[o] := Ay[m];
- inc(m);
- inc(o);
- end else
- begin
- Z[o] := Ax[n];
- inc(n);
- inc(o);
- end;
- end;
- end;
- writeln('Итоговый массив Z - ');
- for n := 1 to Max*2 do write(Z[n]:4);
- end.
Объяснение кода листинга программы
- Объявляются две переменные типа inDat, которые представляют собой массивы целых чисел размером до 10.
- Объявляется переменная типа outDat, которая представляет собой массив целых чисел размером до 20.
- Объявляются три переменные n, m и o, которые будут использоваться для отслеживания текущего элемента в каждом из массивов.
- Переменные Ax и Ay инициализируются случайными числами от 50 до 100.
- Выводится содержимое массивов X и Y.
- Массивы X и Y сортируются в порядке убывания с помощью алгоритма
пузырька
. - Задаются счетчики n, m и o для отслеживания элементов массивов.
- Пока есть элементы в массивах X и Y, происходит следующее:
- Если элемент в массиве X больше элемента в массиве Y, то записывается элемент из массива Y в итоговый массив Z.
- Если элемент в массиве Y больше элемента в массиве X, то записывается элемент из массива X в итоговый массив Z.
- Если элементы в массивах X и Y одинаковы, то записывается элемент из массива X в итоговый массив Z.
- Выводится содержимое итогового массива Z.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д