Logik problem
-
schreib den code neu, der ist nicht gut
-
Aus welchem Grund packst du überhaupt WIN32_FIND_DATA-Strukturen in einen Vector? Brauchst du irgendetwas anderes daraus als den Dateinamen?
-
re
MFK schrieb:
Aus welchem Grund packst du überhaupt WIN32_FIND_DATA-Strukturen in einen Vector? Brauchst du irgendetwas anderes daraus als den Dateinamen?
ja, ich brauch fast alles von der struktur.
[quote="ZuK]Verstehe nicht ganz die logik hinter deinen programm.[/quote]
anfang bei vec_t[0] und vec_s[0]
wenn der vergleichswert nicht gleich ist, dann im vertor mit dem kleineren wert um eins weiter gehen, bis die vergleichswerte gleich sind oder der vergleichswert des anderen vectors kleiner ist. wenn beide gleich sind, wert ausgeben und beide um eins weiter gehen. wieder gucken: beide gleich ? wert ausgeben, ansonsten im vector mit dem niedrigeren wert um eins weiter gehen. das solange machen bis einer der vectoren am ende angekommen sind.das ist meiner meinung nach der schnellste weg, wenn beide listen fast gleich gefuellt sind. koennte aber auch ueber eine binaere suche ganz gut gehen. will ich aber in diesem fall nicht.
tipp schrieb:
schreib den code neu, der ist nicht gut
wieder mal eine sehr gute antwort. wenn du sowas schon schreibst, dann bitte auch mit begruendung. ansonsten lass es
Meep Meep
-
also 3 weitere while schleifen in einer while schleife verschachelt...das ist doch so richtig übel. da muss man erstmal lange nachdenken bevor man das checkt.
-
Hallo MeepMeep,
sollte das erste && nicht ein || sein?
und nur so nebenbei, die iteratoren scheinen ein wenig
falsch deklariert....
jenz
-
jenz schrieb:
Hallo MeepMeep,
sollte das erste && nicht ein || sein?
und nur so nebenbei, die iteratoren scheinen ein wenig
falsch deklariert....
jenz
ups. jo stimmt. liegt aber daran das ich das nicht kopiert sondern reingetippt hatte. sollte natuerlich
std::vector<WIN32_FIND_DATA>::iterator it_s; std::vector<WIN32_FIND_DATA>::iterator it_t;heissen.
das erste && stimmt schon, weil er soll das ja solange machen, solange die iteratoren nicht das ende ihres vectors erreicht haben
ich hab das jetz mal umgeschrieben , weil der code ja nicht gut ist.
while(it_s != vec_s.end() && it_t != vec_t.end()) { result = strcmp(it_s->cFileName, it_t->cFileName); if(result) { if(result < 0) ++it_s; else ++it_t; } else { Memo1->Lines->Add(it_t->cFileName); ++it_s; ++it_t; } }das gleiche ergebnis.
wo liegt da nur mein denkfehler *gruebelMeep Meep
-
ich habe es mal ausprobiert und die
vectoren mit eigenen daten gefüllt.
sieht doch gut aus.
was ist denn deine eingabe und ausgabe?
-
re
hab 2 mal den gleichen ordner eingelesen.
erster ordner mit maskierung *.obj
FileData.obj FileHelper.obj main.obj NetSync.obj StreamHelper.obj TxlAlgo.objund den zweiten mit .
Directory.cpp Directory.h Directory.~cpp Directory.~h FileData.cpp FileData.h FileData.obj FileData.~cpp FileData.~h FileHelper.cpp FileHelper.h FileHelper.obj FileHelper.~cpp FileHelper.~h main.cpp main.ddp main.dfm main.h main.obj main.~cpp main.~ddp main.~dfm main.~h Message.html Message1.html NetSync.bpr NetSync.cpp NetSync.obj NetSync.res NetSync.tds NetSync.~bpr NetSync.~cpp StreamHelper.cpp StreamHelper.h StreamHelper.obj StreamHelper.~cpp StreamHelper.~h TxlAlgo.cpp TxlAlgo.h TxlAlgo.obj TxlAlgo.~cpp TxlAlgo.~hdie beiden vectoren lass ich mir auch im programm ausgeben, damit ich auch bestimmt weiß, das die obj-files in beiden vectoren enthalten sind
ausgabe ist dann in beiden versionen:
FileData.obj FileHelper.obj main.objMeep Meep
-
ah, ich habs.
du vergleichst zwischendurch groß- mit kleinbuchstaben.
strcmp hält da die einen immer für kleiner als die anderen.ob das so richtig ist weiß ich nicht, bei mir funzt es aber, wenn ich
alles uppercase vergleichejenz
-
ja das wars. so ein bloeder fehler.
dank dir
Meep Meep