Другие языки программирования и технологии

Разработать программу анализа или преобразования массива в Паскале

Массивы А и В упорядочены по возрастанию их элементов. Объединить эти массивы в один массив С, упорядоченный по возрастанию элементов. Если в массивах А и В имеются одинаковые элементы, то в массиве С учитывается один из них.
А=(-3,7,8,10,15)
В=(4,6,8,16)
Добюрого времени суток.

Посмотрел и я здесь http://pastie.org/private/uk5cmpzwwpzgw6qr5zetyq. и получил такой результат

-3 7 8 10 15 4 6 16

и это не удивительно, поскольку функционал программы начитнается со строчки

for i:= 1 to 5 do C[ i ]:=A[ i ];

т. е. один в один переписвается первый массив и условие "Объединить эти массивы в один массив С, упорядоченный по возрастанию элементов" не выполняется.

Предлагаю свое решение.

uses Crt;
const
A : array[1..5] of Integer = (-3,7,8,10,15);
B : array[1..4] of Integer = (4,6,8,16);
var
C : array[1..9] of Integer;
j, k : Integer;

function CopyMass(A,B: array of Integer): Integer;
var
i, j, k : Integer;
procedure CopyElement;
begin
k := k + 1;
C[k] := B[j];
j := j + 1;
end;
begin
k := 0;
j := 0;
for i:=0 to High(A) do begin
k := k + 1;
C[k] := A[ i ];
while (B[j] < A[i+1]) and (j <= High(B)) do CopyElement;
if B[j] = A[i+1] then j := j + 1;
end;
while j <= High(B) do CopyElement;
CopyMass := k;
end;

begin
ClrScr;
{определим с какого массива начинаем заполнять массив С}
if A[1] < B[1] then k := CopyMass(A,B) else k := CopyMass(B,A);

for j:=1 to k do Write(C[j]:3);
ReadLn;
end.

Эта программа дает такой результат

-3 4 6 7 8 10 15 16

Удачи!
Михаил Fil
Михаил Fil
59 613
Лучший ответ
Отправил на ящик код программы...
Посмотри тут