000
29.04.2008, 00:12 Uhr
~danhof
Gast
|
Bin Neuling, vielleicht kann mit jemand folgendes erklären: Das ist mein Struct:
| C++: |
struct zustand_note { std::vector<int> werte; // die Zahlen in einen Vektor verpackt zustand_note *next; // Verknüpfung zum Nachfolger }; zustand_note *anker = 0; // Anfang der Liste
|
ein Vektor zum Speichern von intWerten und ein Zeiger auf das nächste Element von Struct. 2 Funktionen:
| C++: |
void zustand_note_ausgeben(zustand_note zx) { std::cout << zx.werte[1] << " " << zx.werte[2] << " " << zx.werte[3] << std::endl; std::cout << zx.werte[4] << " " << zx.werte[5] << " " << zx.werte[6] << std::endl; std::cout << zx.werte[7] << " " << zx.werte[8] << " " << zx.werte[9] << std::endl << std::endl; }
|
Zum ausgeben der Werte des Stuct, und
| C++: |
void zustand_note_init(zustand_note zy, int int1, int int2, int int3, int int4, int int5, int int6, int int7, int int8, int int9) { zy.werte[1] = int1; zy.werte[2] = int2; zy.werte[3] = int3; zy.werte[4] = int4; zy.werte[5] = int5; zy.werte[6] = int6; zy.werte[7] = int7; zy.werte[8] = int8; zy.werte[9] = int9; }
|
zum initialisieren der werte. Jetzt mein Problem:
| C++: |
int main(int argc, char *argv[]) { zustand_note startzustand; zustand_note endzustand;
std::cout << "Programm 8-Puzzle-Breitensuche wird gestartet!\n";
zustand_note_init(startzustand, 2, 8, 3, 1, 6, 4, 7, 0, 5); zustand_note_ausgeben(startzustand); //erste Ausgabe
zustand_note *node = new zustand_note; node->werte = startzustand.werte; node->next = anker; zustand_note_ausgeben(node->werte);// zweite Ausgabe zustand_note_init(endzustand, 1, 2, 3, 8, 0, 4, 7, 6, 5); zustand_note_ausgeben(endzustand);// dritte Ausgabe zustand_note_ausgeben(startzustand);// vierteAusgabe zustand_note_ausgeben(node->werte);// fünfte Ausgabe
system("PAUSE"); return EXIT_SUCCESS; };
|
Ich initialisiere den Startzustand und kopiere seine Werte in den neuen Zeiger auf ein Structelement. danach initialisiere ich den endzustand. Jetzt kommt die Ausgabe:
| Code: |
Programm 8-Puzzle-Breitensuche wird gestartet! 2 8 3 //Ausgabe 1 alls richtig startzustand initialsiert und 1 6 4 // werte richtig 7 0 5
2 8 3 //Ausgabe 2 alls richtig *node initialsiert und werte richtig kopiert 1 6 4 7 0 5
1 2 3 //Ausgabe 3 alls richtig endzustand initialsiert und 8 0 4 // werte richtig 7 6 5
1 2 3 // erneute Ausgabe von startzustand gibt mir die werte des endzustand??? 8 0 4 // wie kann das sein, hab doch nichts geändert 7 6 5
1 2 3 // erneute Ausgabe von *node gibt mir auch die werte des endzustand??? 8 0 4 7 6 5
|
Drücken Sie eine beliebige Taste . . .
Kann mir das bitte iner erklären oder lösen?
| Bearbeitung von 0xdeadbeef: |
cpp-Tags eingefügt, nächstes mal selbst machen.
|
Dieser Post wurde am 29.04.2008 um 02:48 Uhr von 0xdeadbeef editiert. |