Matrix Multiplikation
-
Hallo,
ich schreibe ein Programm mit dem man zwei Matritzen welche jeweils in einer Textbox eingelesen werden multiplizieren kann. Das Ergebnis erscheint dann in einer 3. Textbox.Nun soll das Programm bzw. die verwendeten Funktionen so allgemein wie möglich sein damit man einach weitere Textboxen ohne großen Aufwand hinzufügen kann.
Die Frage ist: Wie kann ich beim ersten Durchlauf in doMatrixMultiplication das Array A speichern und im zweiten das Array B ?
Könnt ihr mir da einen Tipp geben
Danke schonmal.
private: System::Void btnMatrixMul_Click(System::Object^ sender, System::EventArgs^ e) { readoutMatrix(txtBoxMatrixA->Text); readoutMatrix(txtBoxMatrixB->Text); doMatrixMultiplication(aMatrix, aMatrix); } private: void readoutMatrix(String^ tb) { String^ sTemp = tb; String^ sTemp1 = ""; String^ sTemp2 = ""; int iStart = 0, iRowStart, iConvert, iTemp, iIndex = 0; int iEnd, iRow; int iIndexMatrix = 0; int iSpalten, iZeilen; iEnd = sTemp->IndexOf(" ",iStart); while(iEnd != -1) { sTemp1 = sTemp->Substring(iStart, iEnd-iStart); iStart = iEnd + 1; iEnd = sTemp->IndexOf(" ",iStart); bool b = false; b = sTemp1->Contains("\r\n"); iRowStart = 0; if(b == true) { iRow = sTemp1->IndexOf("\r\n", iRowStart); sTemp2 = sTemp1->Substring(iRowStart, iRow-iRowStart); iConvert = int::Parse(sTemp2); FillMatrix(iConvert, iIndexMatrix, iIndex); iIndexMatrix++; iSpalten = iIndex+1; iZeilen = iIndexMatrix+1; iIndex = 0; iRowStart = iRow+2; sTemp2 = sTemp1->Substring(iRowStart); iConvert = int::Parse(sTemp2); FillMatrix(iConvert, iIndexMatrix, iIndex); } else { iConvert = int::Parse(sTemp1); FillMatrix(iConvert, iIndexMatrix, iIndex); } iIndex++; } sTemp1 = sTemp->Substring(iStart); iConvert = int::Parse(sTemp1); FillMatrix(iConvert, iIndexMatrix, iIndex); aMatrix = gcnew array<float, 2>(iZeilen, iSpalten); for(int i=0; i<iZeilen; i++) { for(int j=0; j<iSpalten; j++) { aMatrix[i,j] = aMatrixTemp[i,j]; } } } private: void FillMatrix(int iTemp, int iIndexMatrix, int iIndex) { ... } private: void doMatrixMultiplication(array<float, 2>^ A,array<float, 2>^ B) { ... }