06.09.2008, 21:46
общий
это ответ
Здравствуйте, Miracle!
Можно поступить так: просматриваем в цикле for первый массив, вложенным циклом While идёт по второму. Сначала выбираем все непросмотренные ещё элементы второго массива, не превосходящие текущий элемент первого. Потом выбираем текущий элемент из первого массива... и так до конца первого. Поскольку есть вероятность, что во втором массиве ещё что-то осталось, отдельным циклом смотрим весь этот остаток. Программа в приложении.
Приложение:
Program Fusien;
Uses Crt;
Const
M = 5;
N = 8;
Type
data_array = array [1..100] of integer;
procedure Exchange (var i, j: integer);
var
temp: integer;
begin
temp:= i;
i:= j;
j:= temp;
end;
procedure Sorting (var a: data_array; X: integer);
var
i, j: integer;
begin
for i:= 1 to X-1 do begin
for j:= i+1 to X do begin
if a[i] > a[j] then begin
exchange(a[i], a[j]);
end;
end;
end;
end;
procedure Inputing (var a: data_array; X: integer);
var
i: integer;
begin
for i:= 1 to X do begin
write(' a[', i, '] = ');
readln(a[i]);
end;
end;
var
ArrM, ArrN, ArrMN: data_array;
i, a, b: Integer;
begin
ClrScr;
writeln('Массив ArrM::');
inputing(ArrM, M);
writeln('Массив ArrN:');
inputing(ArrN, N);
sorting(ArrM, M);
sorting(ArrN, N);
a := 1;
b := 1;
writeln('Собранный массив ArrMN:');
for i := 1 to M do begin
if a <= N then
while (ArrN[a] <= ArrM[i]) and (a <= N) do begin
ArrMN[b] := ArrN[a];
inc(a);
write(ArrMN[b]:4);
inc(b);
end;
ArrMN[b] := ArrM[i];
write(ArrMN[b]:4);
inc(b);
end;
for i := a to N do
begin
ArrMN[b] := ArrN[i];
Write(ArrMN[b]:4);
inc(b);
end;
readln;
end.