![]() |
|
|
Регистрация | << Правила форума >> | 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; |
#2
|
||||
|
||||
![]() Мужики, так что там?
Всё так печально, что даже никто не смотрит? ![]() |
#3
|
||||
|
||||
![]() Я вижу, что это у тебя не паскаль, а консольная делфи программа. Потому на тебе для делфи:
Код:
program Project3; {$APPTYPE CONSOLE} uses SysUtils; const size = 6; var a: array[0..size - 1, 0..size - 1] of Extended; i, j, n: integer; m: Extended; mask_start, mask_mid, mask_end: string; begin // Генерю матрицу для тестов Randomize; m := 0.0; for I := Low(a) to High(a) do for J := Low(a[i]) to High(a[i]) do begin a[i, j] := Random($FFFF); if a[i, j] > m then m := a[i, j]; end; // Собственно весь вывод n := Length(FloatToStr(m)); mask_start := Format('| %%0%d.0f', [n]); mask_mid := Format(' %%0%d.0f', [n]); mask_end := Format(' %%0%d.0f |', [n]); for i := Low(a) to High(a) do begin j := 0; Write(Format(mask_start, [a[i, j]])); inc(j); while j < high(a[i]) do begin Write(Format(mask_mid, [a[i, j]])); inc(j); end; Writeln(Format(mask_end, [a[i, j]])); end; Writeln('Ready'); Readln; end. Меня греют ваши плюсы к моей репутации... |