program p82_39;{6}
{ Aranjarea cuvintelor unui text in ordine alfabetica }
uses crt;
var s:string;
    i,j,n:integer;
    cuv:array[byte]of integer;
 {Cuv indica pozitia cuvintelor in string: I byte indica pozita, iar II byte - lungimea}
begin
 clrscr;
 Writeln('Tapeaza un text:');
 Readkey; ClrScr; readln(s);
 n:=0; i:=Length(s);
 
 {Determinarea coordonatelor cuvintelor in S}
 while i>0 do begin
  while(i>0)and(s[i]=' ')do dec(i);
  if i>0 then begin
   inc(n); cuv[n]:=0;
   repeat
    inc(cuv[n]); dec(i);
   Until (i=0)or(s[i]=' ');
   inc(cuv[n],(i+1)*$100);
  end;
  dec(i);
 end;

{Sortarea cuvintelor in Cuv}
for i:=1 to n-1 do for j:=i+1 to n do
 if Copy(s,Hi(cuv[i]),Lo(cuv[i]))>Copy(s,Hi(cuv[j]),Lo(cuv[j]))then begin
   Cuv[n+1]:=cuv[i];cuv[i]:=cuv[j];cuv[j]:=cuv[n+1];
  {Functiile Hi(X) si Lo(X) ~ X div 256 si X mod 256}
 end;
{Afisarea cuvintelor}
 for i:=1 to n do write(Copy(s,Hi(cuv[i]),Lo(cuv[i])),' ');
 readkey
end.
