Cześć. Mam napisać program aby scalić dwa uporządkowane wektory/ciągi w jeden. Napisałem coś takiego (opierając się o notatki z wykładu):
uses
SysUtils;
var
wektor1, wektor2, wektor3 : array of Integer;
k, n: Integer;
i, j, l: Integer;
procedure SCAL(k, n: Integer; i, j, l: Integer); //sortowanie przez scalanie
begin
i:=1;
j:=1;
l:=1;
while (i<=k) and (j<=n)
do
if wektor1[i]<=wektor2[j]
then begin
wektor3[l]:=wektor1[i];
i:=i+1;
end
else begin
wektor3[l]:=wektor2[j];
j:=j+1;
end;
l:=l+1;
while i<=k
do begin
wektor3[l]:=wektor1[i];
i:=i+1;
l:=l+1
end;
while j<=n
do begin
wektor3[l]:=wektor2[j];
j:=j+1;
l:=l+1;
end;
for i:=1 to n
do wektor1[i]:=wektor3[i];
end; //sortowanie przez scalanie
begin
randomize; // generowanie wektorów (początek)
readln(k, n);
setlength(wektor1, k+1);
setlength(wektor2, n+1);
setlength(wektor3, n+k+2);
for i:=1 to k do
begin
wektor1[i]:=wektor1[i-1]+random(10);
write(wektor1[i]:4);
end;
writeln;
for i:=1 to n do
begin
wektor2[i]:=wektor2[i-1]+random(10);
write(wektor2[i]:4);
end;
writeln; //generowanie wektorów (koniec)
SCAL(k,n,i,j,l); //wywolanie precedury
for i:=1 to high(wektor1) do // wypisanie wektora
write(wektor1[i]);
readln;
end.
Dodam, że ten typ sortowania jest mi po troszku obcy i nie wiem za bardzo, gdzie błąd zrobiłem.