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