Matrizenmultiplikation

kloosse

Grünschnabel
hey leute..

wir haben im fach programmierung eine aufgabenstellung bekommen und ich wollt fragen, ob mir da jemand weiterhelfen könnte.. Die Aufgabe muss in C programmiert werden:

"Das Programm soll zwei Matrizen mit jeweils beliebiger Dimension einlesen und
diese multiplizieren, sofern die Multiplikation möglich ist.
Der Benutzer bestimmt die Dimensionen der beiden Matrizen vor der eigentlichen Eingabe
der Matrizenwerte, wobei die Matrize X eine andere Dimension besitzen kann wie die Matrize Y.
(z.B.: X = 2x3; Y = 3x2)
wenn die Matrizen nich multipliziert werden können, muss das dem Benutzer mitgeteilt werden."


Kann jemand weiter helfen? Danke!
 
Nun, erst prüfst Du, ob die Spaltenzahl von A (=SA) gleich der Zeilenzahl von B (=ZB) ist. Ist dies nicht der Fall -> Abbruch.
Dann legst Du das Ergebnisfeld C mit der Größe (ZA, SB) an:
Code:
int* C = malloc(ZA * SB * sizeof(int));
Dann machst Du eine äußere Schleife über alle Zeilen von A (0 bis (ZA - 1)) mit Index i, darin eine Schleife über alle Spalten von B (0 bis (SB - 1)) mit Index j, darin initialisierst Du erst eine Variable c mit 0 und startest eine weitere Schleife, in der Du einen Index k von 0 bis (SA - 1) laufen läßt. In dieser inneren Schleife multiplizierst Du a(k,i) mit b(j,k) und addierst das Ergebnis zu c.
Wenn die innere Schleife fertig ist, speicherst Du das Ergebnis, das in c steht im Ergebnisfeld an der Stelle C[i][j].
Wenn die äußere Schleife durchgelaufen ist, hast Du Dein Ergebnis im Array C und kannst es ausgeben.
Ich hoffe, das hilft Du weiter. Probiere es mal, es ist gar nicht so kompiliziert. Wenn Du weitere Fragen hast, melde Dich hier wieder.
 
Zurück