Matrixmultiplikation
-
mannis frage nach dem int Em[0][0] bezieht sich auf den Typ, nicht auf das, was du dir dabei denkst. Was soll das für eine Art Objekt sein, wie groß ist es? Ein Array der Länge 0?
Count_Omega schrieb:
Ja ich übergebe 2 Matrizen m1 und m2.
Nein, tust du nicht.
-
em soll ein leeres Feld vom Typ int sein.
Wie würde ich dann die Felder richtig übergeben?
-
Count_Omega schrieb:
em soll ein leeres Feld vom Typ int sein.
Wie groß ist das "Feld"?
Wie würde ich dann die Felder richtig übergeben?
manni66 schrieb:
Dann überlege dir, was du dort übergeben willst und was du tatsächlich übergibst.
-
Tut mir leid, ich verstehe nicht, was ihr meint. Em soll ein Feld Mit Größe 1000x1000 sein und nur Nullen beeinhalten(anfangs).
-
Und der Compiler soll die Größe automatisch erraten oder was?
Wenn int a[7] ein Feld der Länge 7 ist, warum soll int a[0] dann die Länge 1000 haben?
-
wie fülle ich dann int em[1000][1000] mit nullen?
-
Du könntest z.B. mal eine Suchmaschine deiner Wahl bemühen.
Da kommt das sowas raus wie https://de.wikibooks.org/wiki/C-Programmierung:_Arrays
-
Ok danke und was ist jetzt der Fehler bei der Übergabe?
-
#include <cstddef> //für den Datentyp 'size_t' #include <array> //für den Datentyp 'array' im Namensraum 'std' int main() { int b[10][12] = {0}; //jedes Element auf 0 setzen int c[10][12] = {6}; //erstes Element auf 6 setzen. int g[2][3] = { {1,2,3}, {4,5,6} }; //...oder jedes Einzeln. //statt auf rohe Arrays kann man auch auf 'std::array' setzen, was //unter anderem davor warnen kann, wenn ungültige //Indizes verwendet werden. std::array<int, 10> d1, d2; //2 Arrays mit jeweils 10 ints. std::array<std::array<int, 12>, 10> m; //Array von 10 Arrays mit jeweils 12 ints. //Bietet auch andere nette Sachen an, z.B. //lässt sich so ein std::array kopieren: d1 = d2; //funktioniert super. //b = c //funktioniert leider nicht... //mit einer Schleife initialisieren: for(size_t row = 0; row < 10; ++row) { for(size_t col = 0; col < 12; ++col) b[row][col] = 1; } //...oder: for(int (&row)[12] : b) //heißt: gehe jedes Element (=Array von 12 ints) durch und lass 'row' //dieses referenzieren (=Referenz auf Array von 12 ints). { for(int &cell : row) //gehe jedes Element durch (=ints) durch und lass 'cell' //dieses referenzieren (=Referenz auf int) cell = 2; //den int, den 'cell' referenziert, auf 2 setzen. } }Upsi, kam wohl etwas zu spät. Aber die std::array-Klasse ist ziemlich super.
-
Techel schrieb:
int c[10][12] = {6}; //jedes Element auf 6 setzen.Nein. Erstes Element (c[0][0]) auf 6, alle anderen auf 0 setzen.
-
Count_Omega schrieb:
Tut mir leid, ich verstehe nicht, was ihr meint. Em soll ein Feld Mit Größe 1000x1000 sein und nur Nullen beeinhalten(anfangs).
Jemandem, der nach nicht einmal 10 Minuten mit "verstehe ich nicht" kommt, ohne auch nur im Ansatz auf dei gestellten Fragen einzugehen, helfe ich nicht.
-
wob schrieb:
Techel schrieb:
int c[10][12] = {6}; //jedes Element auf 6 setzen.Nein. Erstes Element (c[0][0]) auf 6, alle anderen auf 0 setzen.
Da hast du recht, mein Fehler. Ist nun korrigiert.
-
He ich habe die Fragen beantwortet. Ich habe 3h vorher bereits zu meinem Fehler recherchiert und bin zu keinem ERgebnis gekommen. Nun wäre ich froh wenn mir jemand helfen würde.
-
Für 2D-Arrays siehe auch hier: https://www.c-plusplus.net/forum/39489-full
-
Sorry, aber was genau ist der Fehler bei der Übergabe(oder Nichtübergabe) der Arrays?
-
so wie du es machst, ist es falsch.
so ist es richtig: http://stackoverflow.com/questions/8767166/passing-a-2d-array-to-a-c-function
-
manni66 schrieb:
so wie du es machst, ist es falsch.
so ist es richtig: http://stackoverflow.com/questions/8767166/passing-a-2d-array-to-a-c-functionUnd schon wieder eine Schnapsnase mit geklautem Namen
-
Kinder, denkt euch mal 'n eigenen Namen aus. Ich benutze meinen schon seit Jahren...
-
Kann sein dass ich blöd bin aber keine Lösung funktioniert.
Das Ziel istvoid myFunction(double myArray){
...
}
..
double anArray[10][10];
...
myFunction(anArray)ohne Fehler zu rechnen.
-
Count_Omega schrieb:
Kann sein dass ich blöd bin aber keine Lösung funktioniert.
Das Ziel istvoid myFunction(double myArray){
...
}
..
double anArray[10][10];
...
myFunction(anArray)ohne Fehler zu rechnen.
Probier mal so:
void myFunction(double (*myArray)[10])Das Herumreichen von 2D (und mehr D) Arrays ist ein bisschen doof in C++.
Aber das kriegste schon hin.