DAU hat ein Problem !!
-
Hatte den Beitrag im C++ stehen, da gehört er aber wohl nicht hin.
Hi,
ich hab ne Aufgabe von der Schule an der ich verzweifel.
Matrizen multiplikation !Die gegebene Aufgabe:
"...Demgegenüber muß die vorbereitete Funktion int matMul (float f1, float *mi1, int z1, int s1z2, float f2, float *mi2, int s2, float *mout) erst codiert werden.
Sie ermöglicht die Multiplikation zweier Matrizen beliebiger Größe. (Die skalaren Faktoren f1 und f2 sind aus mathematischer Sicht willkürlich;
sie sollen lediglich Anwendungen erleichtern, bei denen alle Elemente der jeweiligen Matrix mit einem konstanten Faktor zu multiplizieren sind.)
Matrizen sind im Rahmen dieser Aufgabe (praxisnah) als eindimensionale Felder gespeichert. ..."Gegebener Quelltext:
int matMul (float f1, float *mi1, int z1, int s1z2, float f2, float *mi2, int s2, float *mout) /* Es wird das gewichtete Produkt zweier Matrizen berechnet. <mout> wird eine <z1>x<s2>-Matrix return = 1: Ausfuehrung erfolgreich ======= Variablen der Parameterrampe: ======= (I) f1, f2 skalare Faktoren (I) mi1, mi2 Eingangsmatrizen (z1 x s1z2), (s1z2 x s2) (I) z1 Anzahl Zeilen erste Matrix (I) s1z2 Anzahl Spalten erste Matrix = Anzahl Zeilen zweite Matrix (I) s2 Anzahl Zeilen, Spalten zweite Matrix (O) mout Ergebnismatrix */ { ??????? ??????? ???????...... return (1); }
Mathe ist klar nur wie packe ich das ganze in zwei, drei for-Schleifen ???
ICH STEH AUF DEM SCHLAUCH !!!!!
Kann da einer helfen ??
THX Merlin04
-
Schreib es dir doch einfach auf einem Stück Papier auf wie du es händisch rechnen würdest.
1 2 3 4 5 6 1 2 3 ? ? 4 5 6 ? ?
Als erstes mal musst du also ermitteln wieviele Zeilen/Spalten eine Matrix hat. Danach musst du schauen wie du 1 mit 1, 2 mit 3, 3 mit 5 assoziieren kannst um damit rechnen zu können.
Bei der einen Matrix wandern wir die x Achse entlang, bei der anderen die y Achse.
Arbeite als erstes am besten mit einer 1 zeiligen Matrix und schau wie du damit auf das richtige Ergebnis kommst. Danach musst du die Berechnung nur noch um eine Dimension erweitern.
Ich hoffe die Tipps helfen dir ein bisschen.