program shell_sort; uses crt; const maxN = 50; var a : array[1..maxN] of string[50]; N : integer; (* Anzahl der eingegeben WÖrter *) procedure lies_strings; var i : integer; begin i:=0; repeat i:=i+1; write('Wort ',i,' : '); readln(a[i]); until a[i]=''; N:=i-1; end; procedure lies_strings_von_datei(datei : string); var dat : text; i : word; begin i:=0; assign(dat,datei); reset(dat); if not eof(dat) then repeat i:=i+1; readln(dat,a[i]); until eof(dat); N:=i; close(dat); end; procedure print_strings( ab:integer); var i : integer; begin for i:=ab to N do writeln(a[i]); writeln('*** ende *** '); end; procedure shellsort; label 0; var i,j,h : integer; v : string; begin h:=1; repeat h:=3*h+1 until h>N; repeat h:=h div 3; for i:=h+1 to N do begin v:=a[i]; j:=i; while (a[j-h] > v) do begin a[j]:=a[j-h]; j:=j-h; if j<=h then goto 0 end; 0: a[j]:=v; end; until h=1; end; begin clrscr; lies_strings_von_datei('sorting.asc'); print_strings(1); writeln;writeln; readln; shellsort; print_strings(1); readln; end.