Соединить два массива в один, сохраняя упорядоченность. - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д