Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
Delphi 11 Alexandria
|
AW: Matrix multiplikation, help
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;
...
|
|
Zitat
|