Eigenen Datentyp?
-
Nach eingehendem Studium deines Codes, muss ich sagen, ich kapier den nicht
Wirklich. Sorry.
Ich hab hier jetzt meinen Versuch weiter umgeschrieben und der sollte eigentlich funktionieren. Was er aber nicht ganz tut. Bei einer 2x2-Matrix wird das letzte Ergebnis nicht berechnet; bei einer 3x3-Matrix werden die letzten zwei Ergebnisse nicht berechnet usw...
Kannst du mal drüber schaun?
matrix *matrix::mul(matrix *M) { if (n != M->m) //m = Zeile, n = Spalte { cout << "Matrizen passen nicht, abbruch!" << endl; return NULL; } matrix *ergebnis = new matrix(M->n,m); ergebnis->init(); int counter = 0; for(int i=0; i<ergebnis->size; i++) { for (int j=0; j<n; j++) { ergebnis->feld[i] = ergebnis->feld[i] + feld[counter+(j)] * M->feld[((j)*M->n)+(i)%M->n]; } if (i%M->n == 0) { counter = counter + n; } } return ergebnis; }
-
vip@r schrieb:
Nach eingehendem Studium deines Codes, muss ich sagen, ich kapier den nicht
Wirklich. Sorry.
Kennst du schon Operatoren-Überladung?
-
Da es eigentlich in dem ganzen Thread schon um Grundlagen geht, würd ich gern ne Frage einschmeißen:
Ich hab mal gelernt und mittlerweile auch schon öfter gelesen, dass ein Array nie mit einer veränderbaren Variablen initialisiert werden darf, also z.B.
int i; cin >> i; int feld[i]
Deswegen versteh ich diesen Teil des Codes des TE nicht ganz, der auch von keinem hier im Thread angekreidet wurde:
... int *feld = 0; feld = new int [n]; ...
Ist die Sache hier etwas anders, weil "new" mit ins Spiel kommt??
-
butterbemme schrieb:
Ist die Sache hier etwas anders, weil "new" mit ins Spiel kommt??
Ja.
-
butterbemme schrieb:
Da es eigentlich in dem ganzen Thread schon um Grundlagen geht, würd ich gern ne Frage einschmeißen:
Ich hab mal gelernt und mittlerweile auch schon öfter gelesen, dass ein Array nie mit einer veränderbaren Variablen initialisiert werden darf, also z.B.
int i; cin >> i; int feld[i]
Deswegen versteh ich diesen Teil des Codes des TE nicht ganz, der auch von keinem hier im Thread angekreidet wurde:
... int *feld = 0; feld = new int [n]; ...
Ist die Sache hier etwas anders, weil "new" mit ins Spiel kommt??
Ja. Da der Speicher mit new erst dynamisch zur Laufzeit reserviert wird, muss auch erst zur Laufzeit seine Größe bekannt sein (kann man aber AFAIR auch obiges problemlos machen, ab irgendeinem Standard).
Normalerweise benutzt man aber für statische und dynamische Arrays std::array und std::vector.
-
Hacker schrieb:
kann man aber AFAIR auch obiges problemlos machen, ab irgendeinem Standard
Nein, das geht nur in C. (ab C99)
-
cooky451 schrieb:
Hacker schrieb:
kann man aber AFAIR auch obiges problemlos machen, ab irgendeinem Standard
Nein, das geht nur in C. (ab C99)
Aha. C hat ja auch new/delete. (?) Oder was versteh ich falsch?
Außerdem kann ich das machen, in meinem GCC 4.6.2, oder ist das IB?
-
Meintest du mit "obiges" etwas anderes als int a[i]; ?
-
Danke für die schnellen Antworten
-
cooky451 schrieb:
Meintest du mit "obiges" etwas anderes als int a[i]; ?
Ney