Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Matrix multiplikation, help

  Alt 7. Jun 2012, 06:07
Noch sinnvoller sind bei solchen Typen auch vor allem Records. Dann kann man die Operatoren auch direkt überladen und dann einfach direkt mit den entsprechenden Variablen rechnen. Das macht insbesondere komplexe Berechnungen sehr viel übersichtlicher.
Beispiel:
Delphi-Quellcode:
var
  Value1, Value2, MultResult: TMatrix;
begin
  Value1 := '((1, 2, 3), (4, 5, 4), (6, 1, 2))';
  Value2 := '(2, 3, 9)';
  MultResult := Value1 * Value2;
Mit:
Delphi-Quellcode:
  TMatrix = record
  private
    type
      TMatrixArray = array of array of Integer;
      PMatrixArray = ^TMatrixArray;
    var
      FWidth: Integer;
      FHeight: Integer;
      FData: TMatrixArray;
    function GetData: PMatrixArray;
  public
    constructor Create(const AWidth, AHeight: Integer);
    class operator implicit(const AValue: string): TMatrix;
    class operator implicit(const AValue: TMatrix): string;
    class operator Add(const AValue1, AValue2: TMatrix): TMatrix;
    class operator Multiply(const AValue1, AValue2: TMatrix): TMatrix;
    class operator Multiply(const AValue: TMatrix; const AScalar: Integer): TMatrix;
    property Data: PMatrixArray read GetData;
    property Width: Integer read FWidth;
    property Height: Integer read FHeight;
  end;

...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat