Problem durch das autom. Schliessen der application
-
Ich bin mir nicht sicher, ob das Thema hier wirklich richtig eingeordnet ist...
Ich benutzte die (zugegeben nicht sehr aktuelle) Umgebung "Dev C++ 4.9.9.2" unter Windows XP.
Beim Testen einiger "großen" Instanzen für das allg. Rucksack-problem wird meine Application mit der folgenden Fehlermeldung beendet. ("This application has requested the runtime to terminate it in an unusualway. Please contact the application's support team for more information"). Bei den jeweils kleineren Teilinstanzen funktioniert alles wunderbar.
Ich weiss jetzt leider nicht, wie ich an ein mögliches Ergebnisse komme. Bzw. weiss ich auch nicht, was den Fehler hervorruft (kein weiteren Speicherplatz, vielleicht keine ausreichende Kommunikation bei der Rekursion, ... ?!? ).
Ich bin sehr dankbar für eventuelle Vorschläge.
vielen Dank und lg.
-
Programm Debuggen.
Eventuell bricht deine Rekursion nicht ab und es entsteht eine Endlosschleife, die zu einem Stack Overflow führt. Möglich ist das jedenfalls alles.
-
hmm... Endlosschleife schließe ich eigentlich aus, da es bei kleineren Testinstanzen terminiert. Und das Terminierungskriterium ist nicht abhängig von irgendwelchen Zahlen die über ihren Wertebereich wachsen können.
Achso ich hatte vergessen zu erwähnen, dass ich das allg. Rocksack-problem mittels Branch and Bound berechne.
-
ComputerCarl schrieb:
Ich benutzte die (zugegeben nicht sehr aktuelle) Umgebung "Dev C++ 4.9.9.2"
Dev-C++ ist veraltet! Wenn du das weisst, warum verwendest du die dann?
Mit einer neueren IDE fällt das Debugging oft einfacher und mehr können wir dir bei unserem Wissen über deine Funktionen auch nicht helfen.
-
Da kann man echt nur raten, aber eventuell hast du nur eine fehlerhafte Abfrage wie diese hier:
bool go = false; do { //egal ob true oder false die Schleife bricht nie ab! }while(go = true); //hier ist der FehlerFehler in Bedingung == anstelle = .
Ohne Code kann dir wohl nicht weiter geholfen werden.
-
HighLigerBiMBam schrieb:
Fehler in Bedingung == anstelle = .
Lesen müsste man können...
ComputerCarl schrieb:
Endlosschleife schließe ich eigentlich aus, da es bei kleineren Testinstanzen terminiert.
Zudem schreibt niemand, der das Wesen der
if-Abfrage verstanden hat, "== true" in einer Bedingung.Aber stimmt, es könnte ja sein, dass eine kaputte (und warum eigentlich eine do-while-)Schleife nur ab einem bestimmten Wert durchlaufen wird, obwohl sein Terminierungskriterium nicht von von irgendwelchen Zahlen abhängt (vgl. ComputerCarl). Nur ist das sehr unwahrscheinlich, weshalb ich diesen postcounter++ lieber gelassen hätte.
-
Danke erstmal für die Ideen. Ich denke das Problem wird wohl einfach zum Stackoverflow führen und deshalb wird abgebrochen.
Der Code ist zwar nicht zu groß, ihn aber hier reinzustellen, wäre eine Zumutung für jeden Leser. Ich werde nächste Woche einfach nochmal die Dozenten fragen (sie waren auch etwas "überfragt" und nehmen an das es irgendwas mit einer Windows-macke zu tun hat. Einen Stackoverflow hatten sie glaub ich ausgeschlossen, da die Instanzen nicht zu groß waren) bzw. werde ich wohl spätestes nach der Korrektur der Hausaufgabe wissen, wo das Problem liegt.viellicht kann ich ja schon nächste Woche die Antwort posten...
Bis dahin einen schönen 2. Advent an alle User!!!