Sortowanie przez scalanie, bład w kodzie

0

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.

0
  1. Tablice dynamiczne są indeksowane od 0 a nie od 1
  2. Do funkcji raczej masz przekazać wektory a nie ich rozmiary, rozmiary to określisz wewnątrz funkcji przez High() lub Length().
  3. Przekazanie parametrów do funkcji które funkcja używa jako zmienne lokalne (i,j,l) - kompletny absurd !
  4. Gdzie funkcja scalania zapisuje wyniki? A co wyświetlasz na koniec?
0

1.Jaki błąd ?
2.Dodaj {$APPTYPE CONSOLE} na początek programu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1