Объединить элементы двух массивов в один по неубыванию - 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.