Czy my sie przypadkiem nie znamy ?? ;> Przed wczoraj na zajeciach z delphi mialem bardzo podobne zadanie dodawanie mnozenie i liczenie przekatnych macierzy wpisanych do stringgirda pokaze ci jak ja to zrobilem:
Kopiuj
implementation
type
Tablica=array of array of double;
function Iloczyn(a: Tablica; b: Tablica; w1kol2, kol1w2: integer): Tablica;
var
ai, bi, i: integer;
c: Tablica;
wyn: double;
begin
SetLength(c,w1kol2,w1kol2);
SetLength(a,kol1w2,w1kol2);
SetLength(b,w1kol2,kol1w2);
for ai := 1 to w1kol2 do
for bi := 1 to w1kol2 do
begin
wyn := 0;
for i := 1 to kol1w2 do
begin
wyn := wyn + (a[i-1,ai-1] * b[bi-1,i-1]);
c[bi-1,ai-1] := wyn;
end;
end;
Result:=c;
end;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
Tab1, Tab2, Tab3: Tablica;
kol1w2,w1kol2, x, y: integer;
begin
kol1w2 := StrToInt(Edit1.Text);
w1kol2 := StrToInt(Edit2.Text);
SetLength(Tab1,kol1w2,w1kol2);
SetLength(Tab2,w1kol2,kol1w2);
SetLength(Tab3,w1kol2,w1kol2);
StringGrid1.RowCount := w1kol2 + 1;
StringGrid2.RowCount := kol1w2 + 1;
StringGrid3.RowCount := w1kol2 + 1;
StringGrid1.ColCount := kol1w2 + 1;
StringGrid2.ColCount := w1kol2 + 1;
StringGrid3.ColCount := w1kol2 + 1;
for y := 1 to w1kol2 do
for x := 1 to kol1w2 do
begin
Tab1[x-1,y-1] := int(Random(5));
Tab2[y-1,x-1] := int(Random(5));
StringGrid1.Cells[x,y] := FloatToStr(Tab1[x-1,y-1]);
StringGrid2.cells[y,x] := FloatToStr(Tab2[y-1,x-1]);
end;
Tab3 := Iloczyn(Tab1,Tab2,w1kol2,kol1w2);
for y := 1 to w1kol2 do
for x := 1 to w1kol2 do
StringGrid3.Cells[x,y] := FloatToStr(Tab3[x-1,y-1]);
end;
Nie wiem czy dokladnie o to ci chodzilo ale mam nadzieje ze okaze sie to pomocne ;)