Объединить элементы двух массивов в один по неубыванию - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Заданы два массива с N и M элементами, упорядоченными по неубыванию, объединить элементы этих массивов в один массив так, чтобы элементы снова оказались упорядоченными по неубыванию.
Не получается составить код Паскаль

Решение задачи: «Объединить элементы двух массивов в один по неубыванию»

textual
Листинг программы
  1. const
  2.   Max = 10;
  3.  
  4. type
  5.   inDat = array [1..Max] of integer;
  6.   outDat = array [1..Max * 2] of integer;
  7.  
  8. var
  9.   n, m, o, x, y: integer;
  10.   Ax, Ay: inDat;
  11.   Z: outDat;
  12.  
  13. procedure printMas;//вывод массивов на экран
  14. var n:integer;
  15. begin
  16. Writeln('Массив X - ');
  17. for  n := 1 to Max do write(Ax[n]:4);
  18. writeln;
  19. Writeln('Массив Y - ');
  20. for  n := 1 to Max do write(AY[n]:4);
  21. writeln;
  22. end;
  23.  
  24. begin
  25.     randomize;
  26.     for n := 1 to Max do  //создаем два случайных массива
  27.     begin
  28.       Ax[n] := 50 - random(101);
  29.       Ay[n] := 50 - random(101);
  30.     end;
  31.     printMas;
  32.     for n := 1 to Max - 1 do    //сортировка "пузырьком"
  33.       for m := 1 to Max - n do
  34.       begin
  35.         if Ax[m] > Ax[m + 1] then
  36.         begin
  37.           x := Ax[m];
  38.           Ax[m] := Ax[m + 1];
  39.           Ax[m + 1] := x;
  40.         end;
  41.         if Ay[m] > Ay[m + 1] then
  42.         begin
  43.           y := Ay[m];
  44.           Ay[m] := Ay[m + 1];
  45.           Ay[m + 1] := y;
  46.         end;
  47.       end;    
  48.   writeln('Отсортированные массивы:');
  49.   printMas;
  50.  
  51.   n := 1;m := 1;o := 1;//задаем счетчики  
  52.   while (n <= Max) or (m <= Max) do
  53.   begin
  54.     if n > max then //если один массив до конца дочитан то читаем другой до конца
  55.     begin
  56.       Z[o] := Ay[m];
  57.       inc(m);
  58.       inc(o);      
  59.     end else    
  60.     if m > Max then //и наоборот
  61.     begin
  62.       Z[o] := Ax[n];
  63.       inc(n);
  64.       inc(o);
  65.     end;
  66.     if (m <= Max) and (n <= Max) then //а пока ни один не дочитан до конца
  67.     begin
  68.       if Ax[n] > Ay[m] then //сравниваем элементы массивов и меньший пишем в третий массив
  69.       begin
  70.         Z[o] := Ay[m];
  71.         inc(m);
  72.         inc(o);      
  73.       end else      
  74.       begin
  75.         Z[o] := Ax[n];      
  76.         inc(n);
  77.         inc(o);    
  78.       end;  
  79.     end;
  80.   end;  
  81.   writeln('Итоговый массив  Z - ');
  82.     for n := 1 to Max*2 do write(Z[n]:4);
  83. end.

Объяснение кода листинга программы

  1. Объявляются две переменные типа inDat, которые представляют собой массивы целых чисел размером до 10.
  2. Объявляется переменная типа outDat, которая представляет собой массив целых чисел размером до 20.
  3. Объявляются три переменные n, m и o, которые будут использоваться для отслеживания текущего элемента в каждом из массивов.
  4. Переменные Ax и Ay инициализируются случайными числами от 50 до 100.
  5. Выводится содержимое массивов X и Y.
  6. Массивы X и Y сортируются в порядке убывания с помощью алгоритма пузырька.
  7. Задаются счетчики n, m и o для отслеживания элементов массивов.
  8. Пока есть элементы в массивах X и Y, происходит следующее:
    • Если элемент в массиве X больше элемента в массиве Y, то записывается элемент из массива Y в итоговый массив Z.
    • Если элемент в массиве Y больше элемента в массиве X, то записывается элемент из массива X в итоговый массив Z.
    • Если элементы в массивах X и Y одинаковы, то записывается элемент из массива X в итоговый массив Z.
  9. Выводится содержимое итогового массива Z.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы