Guten Tag,
ich lasse eine/n Nutzer/in in ein StringGrid, dessen Row- und ColCount er/sie bestimmen kann, Zahlen eingeben, die dann in ein dynamisches, zweidimensionales Array of Double eingelesen und als Matrizen multipliziert werden.
Der Code dafür sieht wie folgt aus:
Delphi-Quellcode:
procedure TMatrizen.MatrizenMultiplikation;
var i, j, Zeile, Spalte: Byte;
MatrixA, MatrixB, MatrixE: Array of Array of Double;
begin
//Hier steht für mein Problem unwichtiger Code
...
//MatrixA * MatrixB (den anderen Fall, BxA, habe ich absichtlich hier weggelassen, das Prinzip ist das gleiche)
if SAA = ZAB then begin
//This is the part where the matrices are multiplied
//Do for all rows
repeat
//Do for all cols
repeat
//Specific part of the multiplication
for i := 0 to SAA-1 do
begin
MatrixE[Spalte, Zeile] := MatrixE[Spalte, Zeile] + MatrixA[i,Zeile]*MatrixB[Spalte,i]
end;
Inc(Spalte)
until Spalte = SAA;
Inc(Zeile);
Spalte := 0
until Zeile = ZAA;
//Hier folgt weiterer, nicht so wichtiger Code
end;
Multipliziere ich zwei quadratische Matrizen, gibt es keine Probleme, alle Elemente werden richtig errechnet und ausgegeben.
Lauten die Dimensionien aber 3 kreuz 2 * 3 kreuz 3, dann bekomme ich die im Anhang mitgeschickte Fehlermeldung, sobald ich ein Element ausgeben will - aber nur, wenn ich vorher nicht zwei quadratische Matrizen multipliziert habe, denn sonst funktioniert es.
Meine Vermutung ist, dass es mit der Multiplikation zusammenhängen muss, allerdings weiß ich nicht wo. Wenn weiterer Code erwünscht ist, kann ich den auch noch zeigen.
mfg. Mysterio08