Matthias Reitinger
ɐɯıǝɹ
Stimmt natürlich, da hab ich wohl nicht mitgedacht. Bei dem Aufruf werden die Elemente von B ja überschrieben, obwohl man zur Berechnung die alten Werten brauchen würde.Hatte ich auch gedacht, kommt aber quatsch raus:
Wieso wäre das schön? Ich würde einfach eine temporäre Matrix anlegen und diese nach der Mutliplikation rüberkopieren:Es wäre schön wenn die ersten beiden Argumente von MMult nicht als Referenz angenommen werden, sondern neu angelegt werden (call-by-value).
C++:
void MMult(int A[][3], int B[][3], int C[][3])
{
int sum;
int C_[][3] = {{0,0,0},{0,0,0},{0,0,0}};
// Zeilen
for (short i = 0; i <= 2; i++)
{
// Spalten
for (short j = 0; j <= 2; j++)
{
sum = 0;
for (short k = 0; k <= 2; k++)
{
sum += A[i][k] * B[k][j];
}
C_[i][j] = sum;
}
}
for (short i = 0; i <= 2; ++i) {
for (short j = 0; j <= 2; ++j) {
C[i][j] = C_[i][j];
}
}
}