Program SortTxt;
(*--------------------------------------------------------
  In fisierul 'BAC.txt' se afla mai multe numere naturale
  din cate cel mult trei cifre fiecare.
  Numerele sunt separate prin spatii.
  
  Scrieti un program care creaza un alt fisier 'BAC2.txt'
  care sa contina aceleasi numere din fisierul 'BAC.txt',
  cate unul pe linie, in ordinea crescatoare a valorilor
  acestora.
  --------------------------------------------------------*)
uses crt;
var fin, fout: text;
    list: array[0..1000] of word;
    n, i, j, k: word;

procedure genbactxt(nr: word);
var f: text;
begin
    assign(f, 'BAC.txt');  rewrite(f);
    randomize;
    while nr  > 0 do begin
      dec(nr);
      write(f, random(1000):4);
    end;
    close(f);
end;

begin
    {Generarea fisierului 'BAC.txt' - Optional}
    genbactxt(1000);

    {Citirea din fisier}
    assign(fin, 'BAC.txt');
    reset(fin);
    n := 0;
    while not eof(fin) do
    begin
      read(fin, list[n]);
      inc(n);
    end;
    close(fin);

    {Daca fisierul 'BAC.txt' nu contine nici un numar, se termina executia programului}
    if n = 0 then Exit;

    {Sortarea listei}
    for i := 0 to n-2 do for j := i+1 to n-1 do
      if list[i]>list[j] then begin
        k := list[i]; list[i] := list[j]; list[j] := k;
      end;

    {Scrierea listei in fisier}
    assign(fout, 'BAC2.txt');
    rewrite(fout);
    for i := 0 to n-1 do writeln(fout, list[i]);
    close(fout);

    {Afisarea listei de numere sortate la consola - Optional}
     clrscr;
     for i := 0 to n-1 do write(list[i]:4);
     readkey;
end.
