![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Здравствуйте. Вот, в универе практикуем на паскале пока самые основы основ. К сожалению, еще до поступления я научился програмировать самомтоятельно, но через ж., за это препод меня гордо охрестил быдлокодером. Вот моя самая быдло-кодерская функция с дз, она рисует матрицу с выравниванием по самому длинному элементу.
Вот пример работы функции: 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; |