{ Bubble Sort Demonstration Program }
{       Microsoft Pascal 3.1        }

{ The main routine reads from the terminal an array  }
{ of ten real numbers and calls the procedure BUBBLE }
{ to sort them.                                      }

program BubbleSort(input,output);

  const
    TABLEN = 10;                    { Length of reals table }

  type
    TABLE = array[1 .. TABLEN] of real4;
                                    { Table of reals type }
  var
    R:          TABLE;              { The table itself }
    i:          integer;            { Table index }

  procedure Bubble(var t: TABLE);   { The sorting routine }
    var
      i:        integer;            { Index variable }
      j:        integer;            { Index variable }
      temp:     real4;              { Exchange variable }
    begin
      for i := 1 to 9 do            { Outer loop }
        begin
          for j := i + 1 to 10 do   { Inner loop }
            begin
              if (t[i] > t[j]) then { Sort in ascending order }
                begin
                  temp := t[i];     { Perform the }
                  t[i] := t[j];     { exchange of }
                  t[j] := temp;     { table elememts }
                end;
            end;
        end;
    end;

  begin
    writeln(' Bubble Sort Demonstration Program.');
    for i := 1 to 10 do             { Loop to read in reals }
      begin
        writeln(' Please input real number no. ',i:2);
                                    { Prompt user }
        readln(R[i]);               { Read response }
      end;
    Bubble(R);                      { Sort the array }
    writeln;                        { Skip a line }
    writeln(' The sorted ordering from lowest to highest is:');
                                    { Print a header }
    for i := 1 to 10 do             { Loop to print array }
      begin
        write(R[i]);                { Write a number }
        if (i mod 5 = 0) then writeln;
                                    { Five numbers per line }
      end;
  end.
