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

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

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

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

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

textual
Листинг программы
procedure vMerge(const a, b: array of Integer; var c: array of Integer);
var i, j, k: Integer;
begin
  i:=0; j:=0; k:=0;
  while (i<=High(a)) and (j<=High(b)) do
    if a[i]<b[j] then begin
      c[k]:=a[i]; Inc(i); Inc(k);
    end else begin
      c[k]:=b[j]; Inc(j); Inc(k);
    end;
  for i:=i to High(a) do begin c[k]:=a[i]; Inc(k); end;
  for j:=j to High(b) do begin c[k]:=b[j]; Inc(k); end;
end;
procedure vWrite(const a: array of Integer);
var i: Integer;
begin
  for i:=0 to High(a) do Write(' ',a[i]); WriteLn;
end;
procedure vGen(var a: array of Integer; b, c: Integer);
var i: Integer;
begin
 for i:=0 to High(a) do a[i]:=b+Random(c);
end;
procedure vSort(var a: array of Integer);
var i, j, t: Integer; Done: Boolean;
begin
  for i:=High(a) downto 1 do begin
    Done:=True;
    for j:=1 to i do
      if a[j]<a[j-1] then begin
        t:=a[j]; a[j]:=a[j-1]; a[j-1]:=t; Done:=False;
      end;
    if Done then Break;
  end;
end;
var
  a: array [1..9] of Integer;
  b: array [1..11] of Integer;
  c: array [1..High(a)-Low(a)+High(b)-Low(b)+2] of Integer;
begin
  Randomize;
  vGen(a,0,100); vGen(b,0,100); vSort(a); vSort(b); vMerge(a,b,c);
  Write('A ='); vWrite(a);
  Write('B ='); vWrite(b);
  Write('C ='); vWrite(c);
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
Похожие ответы