Matrix modellieren
-
Hi,
ich bin gerade dabei einen Algorithmus für die Graphentheorie zu implementieren. Dazu will ich eine Matrix für die Kosten aufstellen. Nun suche ich schon seit einer Ewigkeit einen Fehler, ich konnte ihn auf folgendes Programm reduzieren:
#include <iostream> using namespace std; int main() { int d[4][4] = { {1,-3,0,5}, {0,0,1,3}, {0,0,0,-1}, {4,2,0,0} }; for (int i=1; i<=4; i++) { for (int j=1; j<=4; j++) cout << d[i][j] << " "; cout << endl; } }Eigentlich ganz simpel, aber kann mir jemand erklären, wieso ich als Ausgabe nicht die Matrix d erhalte, sondern
0 1 3 0 0 0 -1 4 2 0 0 0 0 2293624 4198762 1? Ich kapier das beim besten Willen nicht, ich hoffe ihr könnt meinen dummen Fehler finden.
Danke und Gruß
-
Ein Arrayindex fängt bei 0 an und geht bis und mit N - 1.
#include <iostream> int main() { int arr[4] = { 1, 2, 3, 4 }; for(int i = 0; i < 4; ++i) { std::cout << i << std::endl; } return 0; }Grüssli
-
Dein array hat vier einträge: 0,1,2,3 da du aber in der forschleife bis irgendwann i=4 hast greifst du auf d[4][...] und dies führt zu undefiniertem verhalten.
so wäre es richtig:
for (int i=1; i<4; i++) { for (int j=1; j<4; j++)edit: zu spät

-
Fencer schrieb:
edit: zu spät

Und auch falsch, du musst bei 0 anfangen

Grüssli
-
Oh Gott, wie frustrierend...da programmiert man seit Jahren und bleibt ewig an einem solchen Anfängerfehler hängen
Danke für die schnelle Hilfe.
-
da programmiert man seit Jahren
Matlab?
-
Nee, C, PHP, Java, ... seit Jahren und auch kommerziell, also eigentlich dürfte ich auf sowas nicht reinfallen

-
Herr-Vorragend schrieb:
... seit Jahren und auch kommerziell, ...
Aber keine lebenswichtige Systeme? Sonst sag mal welche, damit wir um diese einen grossen Bogen machen können

Fehler verstecken sind immer dort, wo man sie nicht sucht.
Grüssli