Соединить два массива в один, сохраняя упорядоченность. - Turbo Pascal

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

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

Даны два вектора {xi}, {yi}, i=1, ..., 10, упорядоченные по возрастанию. Соедините их в один вектор {zi}, i=1, ..., 20 так, чтобы сохранилась упорядоченность.

Решение задачи: «Соединить два массива в один, сохраняя упорядоченность.»

textual
Листинг программы
  1. procedure vMerge(const a, b: array of Integer; var c: array of Integer);
  2. var i, j, k: Integer;
  3. begin
  4.   i:=0; j:=0; k:=0;
  5.   while (i<=High(a)) and (j<=High(b)) do
  6.     if a[i]<b[j] then begin
  7.       c[k]:=a[i]; Inc(i); Inc(k);
  8.     end else begin
  9.       c[k]:=b[j]; Inc(j); Inc(k);
  10.     end;
  11.   for i:=i to High(a) do begin c[k]:=a[i]; Inc(k); end;
  12.   for j:=j to High(b) do begin c[k]:=b[j]; Inc(k); end;
  13. end;
  14. procedure vWrite(const a: array of Integer);
  15. var i: Integer;
  16. begin
  17.   for i:=0 to High(a) do Write(' ',a[i]); WriteLn;
  18. end;
  19. procedure vGen(var a: array of Integer; b, c: Integer);
  20. var i: Integer;
  21. begin
  22.  for i:=0 to High(a) do a[i]:=b+Random(c);
  23. end;
  24. procedure vSort(var a: array of Integer);
  25. var i, j, t: Integer; Done: Boolean;
  26. begin
  27.   for i:=High(a) downto 1 do begin
  28.     Done:=True;
  29.     for j:=1 to i do
  30.       if a[j]<a[j-1] then begin
  31.         t:=a[j]; a[j]:=a[j-1]; a[j-1]:=t; Done:=False;
  32.       end;
  33.     if Done then Break;
  34.   end;
  35. end;
  36. var
  37.   a: array [1..9] of Integer;
  38.   b: array [1..11] of Integer;
  39.   c: array [1..High(a)-Low(a)+High(b)-Low(b)+2] of Integer;
  40. begin
  41.   Randomize;
  42.   vGen(a,0,100); vGen(b,0,100); vSort(a); vSort(b); vMerge(a,b,c);
  43.   Write('A ='); vWrite(a);
  44.   Write('B ='); vWrite(b);
  45.   Write('C ='); vWrite(c);
  46. end.

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

  1. В процедуре vMerge два массива a и b соединяются в один массив c, при этом сохраняется упорядоченность. Переменные i, j и k используются для отслеживания индексов элементов массивов a и b, а также для обновления соответствующих элементов массива c.
  2. В процедуре vWrite элементы массива a выводятся на экран через пробелы.
  3. В процедуре vGen каждому элементу массива a присваивается значение, полученное путем добавления случайного числа к значению элемента массива b.
  4. В процедуре vSort массив a сортируется в порядке возрастания. Переменная Done используется для отслеживания того, была ли выполнена сортировка, и если да, то прерывается цикл сортировки.
  5. В основной программе генерируются два массива a и b, затем они сортируются и соединяются в массив c с помощью процедуры vMerge. Затем выводятся на экран значения массивов a, b и c.

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


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

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

11   голосов , оценка 4.273 из 5

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

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

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