Здравствуйте. Вот, в универе практикуем на паскале пока самые основы основ. К сожалению, еще до поступления я научился програмировать самомтоятельно, но через ж., за это препод меня гордо охрестил быдлокодером. Вот моя самая быдло-кодерская функция с дз, она рисует матрицу с выравниванием по самому длинному элементу.
Вот пример работы функции:
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;