Data update
This commit is contained in:
parent
81fd053722
commit
52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions
93
Task/Matrix-multiplication/Delphi/matrix-multiplication.pas
Normal file
93
Task/Matrix-multiplication/Delphi/matrix-multiplication.pas
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
program Matrix_multiplication;
|
||||
|
||||
{$APPTYPE CONSOLE}
|
||||
|
||||
uses
|
||||
System.SysUtils;
|
||||
|
||||
type
|
||||
TMatrix = record
|
||||
values: array of array of Double;
|
||||
Rows, Cols: Integer;
|
||||
constructor Create(Rows, Cols: Integer);
|
||||
class operator Multiply(a: TMatrix; b: TMatrix): TMatrix;
|
||||
function ToString: string;
|
||||
end;
|
||||
|
||||
{ TMatrix }
|
||||
|
||||
constructor TMatrix.Create(Rows, Cols: Integer);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
Self.Rows := Rows;
|
||||
self.Cols := Cols;
|
||||
SetLength(values, Rows);
|
||||
for i := 0 to High(values) do
|
||||
SetLength(values[i], Cols);
|
||||
end;
|
||||
|
||||
class operator TMatrix.Multiply(a, b: TMatrix): TMatrix;
|
||||
var
|
||||
rows, cols, l: Integer;
|
||||
i, j: Integer;
|
||||
sum: Double;
|
||||
k: Integer;
|
||||
begin
|
||||
rows := a.Rows;
|
||||
cols := b.Cols;
|
||||
l := a.Cols;
|
||||
if l <> b.Rows then
|
||||
raise Exception.Create('Illegal matrix dimensions for multiplication');
|
||||
result := TMatrix.create(a.rows, b.Cols);
|
||||
for i := 0 to rows - 1 do
|
||||
for j := 0 to cols - 1 do
|
||||
begin
|
||||
sum := 0.0;
|
||||
for k := 0 to l - 1 do
|
||||
sum := sum + (a.values[i, k] * b.values[k, j]);
|
||||
result.values[i, j] := sum;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TMatrix.ToString: string;
|
||||
var
|
||||
i, j: Integer;
|
||||
begin
|
||||
Result := '[';
|
||||
for i := 0 to 2 do
|
||||
begin
|
||||
if i > 0 then
|
||||
Result := Result + #10;
|
||||
Result := Result + '[';
|
||||
for j := 0 to 2 do
|
||||
begin
|
||||
if j > 0 then
|
||||
Result := Result + ', ';
|
||||
Result := Result + format('%5.2f', [values[i, j]]);
|
||||
end;
|
||||
Result := Result + ']';
|
||||
end;
|
||||
Result := Result + ']';
|
||||
end;
|
||||
|
||||
var
|
||||
a, b, r: TMatrix;
|
||||
i, j: Integer;
|
||||
|
||||
begin
|
||||
a := TMatrix.Create(3, 3);
|
||||
b := TMatrix.Create(3, 3);
|
||||
a.values := [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
|
||||
b.values := [[2, 2, 2], [5, 5, 5], [7, 7, 7]];
|
||||
r := a * b;
|
||||
|
||||
Writeln('a: ');
|
||||
Writeln(a.ToString, #10);
|
||||
Writeln('b: ');
|
||||
Writeln(b.ToString, #10);
|
||||
Writeln('a * b:');
|
||||
Writeln(r.ToString);
|
||||
readln;
|
||||
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue