Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.12.2010, 15:18
Аватар для Yurgen
Yurgen Yurgen вне форума
Прохожий
 
Регистрация: 09.12.2010
Адрес: Киев
Сообщения: 13
Репутация: 10
По умолчанию Рисуем матрицу в 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;
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:32.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025