Соединить два массива в один, сохраняя упорядоченность. - 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.
Объяснение кода листинга программы
- В процедуре vMerge два массива a и b соединяются в один массив c, при этом сохраняется упорядоченность. Переменные i, j и k используются для отслеживания индексов элементов массивов a и b, а также для обновления соответствующих элементов массива c.
- В процедуре vWrite элементы массива a выводятся на экран через пробелы.
- В процедуре vGen каждому элементу массива a присваивается значение, полученное путем добавления случайного числа к значению элемента массива b.
- В процедуре vSort массив a сортируется в порядке возрастания. Переменная Done используется для отслеживания того, была ли выполнена сортировка, и если да, то прерывается цикл сортировки.
- В основной программе генерируются два массива a и b, затем они сортируются и соединяются в массив c с помощью процедуры vMerge. Затем выводятся на экран значения массивов a, b и c.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д