Здравствуйте. Вот, в универе практикуем на паскале пока самые основы основ. К сожалению, еще до поступления я научился програмировать самомтоятельно, но через ж., за это препод меня гордо охрестил быдлокодером. Вот моя самая быдло-кодерская функция с дз, она рисует матрицу с выравниванием по самому длинному элементу.
Вот пример работы функции:
http://www.dropmocks.com/mNOe6
Кратко о номенклатуре:
	Код:
	type
float = extended;
TMatrix = array of array of float;
 
MathCols и MathRows - возвращают кол-во столбцов и строк соответсвтвенно.
	Код:
	     procedure DrawMatrix     ( m : TMatrix; const Cap : string = '');
       var
           i,
           j,
           p : Integer;
           n : array of Integer;
         max : float;
    begin
        SetLength ( n, MathCols ( m ) );
        for j := 0 to pred ( MathCols ( m ) ) do begin
           max := m[0][j];
           n[j] := LengthNum( m[0][j] );
          for i := 0 to pred ( MathRows ( m ) ) do begin
            if ( m[i][j] > max ) then begin
                 max := m[i][j];
                n[j] := LengthNum ( m[i][j] );
            end;
          end;
        end;
        p := ( MathRows ( m ) div 2 );
        for i := 0 to pred ( MathRows(m) ) do begin
            if ( i = p ) then write ( cap , '|' )
            else begin
                PrintLength ( '', Length ( cap ) );
                write ( '|' );
            end;
            for j := 0 to pred ( MathCols(m) ) do begin
              write ( ' ' );
              Printlength ( FloatToStr( m[i][j] ), n[j] );
              write ( ' ' );
            end;
            write ( '|' );
            Writeln;
        end;
        writeln;
    end; 
Как стало заметно, своими кривыми руками для того что бы написать эту функция я написал еще две вспомогательные 
 
 
	Код:
	    function  LengthNum      ( n : float ) : Integer;
    begin
         Result := Length ( FloatToStr ( n ) );
    end;
    procedure PrintLength    ( inp : string; n : integer );
    begin
          while ( Length ( inp )  < n ) do inp := ' ' + inp;
          write ( inp );
    end;