Frage zu Vector und Bubblesort
-
Hallo,
mein Problem sieht folgendermaßen aus. Ich habe eine Algorhythmus welcher x-zufällige Zahlen Zahlen generiert. Dies Zahlen werden in eine Datei geschrieben. In einem weiteren Algorhythmus werden dies Zahlen aus der Datei ausgelesen und dann in den Vector geschrieben.Danach wird der Vector an eine Bubblesortroutine übergeben. Jedoch ist mir folgendes passiert. Wenn die Anzahl der Zahlen, in der Datei, 20 übersteigt dann steigt das Programm aus und hängt sich total auf, bis 20 geht alles super aber bei höhren Anzahlen steigt er aus. Meine Frage ist nun, hängt das mit der Bubblesortmethode zusammen oder mit was anderem? Danke für eure Bemühungen und jegliche Antworten.
-
Zeig mal das Einlesen ... und deine bubblesort implementierung ...
-
ok mom
is jetzt zwar aus dem kontext gerissen aber das is das aulesenfstream datei; string data; string data2; datei.open("datum.txt",ios::in); while(getline(datei,data)) { daten.push_back(data); }und das is das bubblesort
wenn ich dem vector<string> so 10 einträge gebe dann haut das alles gut hin also dann sortiert er auch richtig, aber wenns mehr wird dann nicht
for(size_t i = 1;i<datum_int.size();i++) { for(size_t j =0;j<i;j++) { if(datum_int[i]<datum_int[j]) { int temp = datum_int[i]; datum_int[i] = datum_int[j]; datum_int[j] = temp; } } }das ist die fehlermeldung in der CMD wenn ich es ausführen will
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
-
Irgendwas stimmt da nicht ... du zeigst uns wie du einen vector<string> füllst und dann, wie du einen vector<int> sortierst

-
nee keine panik das hat seine richtigkeit, das is ne methode zum sortieren von datas...die konvertiert natürlich im laufe des programms die ausgelesen string in einen int, wie gesagt wenn ich 10 data aus der datei auslesen lasse dann sortiert es ohne was zu meckern, sobald es aber mehr als 20 werden dann hängt er sich auf, also da wo die sortierung kommt ist der string shcon gecastet, wie es in den FAQ steht

-
Zeig mal den Abschnitt mit der Konvertierung. Vielleicht arbeitest du ja mit Referenzen auf temporäre Objekte oder ähnlichem.
-
ok also heir der cast von string nach int
str<<date; str>>in_datum; str.clear(); //natürlich ist str ein stringstream und in_datum ein intso und hier kommt das ganze wieder anders herum
zahl = datum_int[i]; Zahl2Str<<zahl; string neues_datum(Zahl2Str.str()); Zahl2Str.str("");wie gesagt wenn ich derm vector per hand ein paar strings übergebe, dann klappt das alles wunderbar, aber sobald ich das aus einer datei einlese, hängt sich alles und ich weiß nich warum...
-
1. Frage: Warum ließt du nicht direkt als Integer aus?
2. str.clear(); alleine reicht nicht. str.str(""); muss da schon hinter!
3. War bubble_sort nicht#include <algorithm> // std::swap template <typename T> void bubble_sort(T*& arr, const std::size_t size) { bool redo(false); do { redo = false; for (std::size_t i(0); (i < (size - 1) && arr[i] != NULL && arr[i + 1] != NULL); ++i) if (arr[i] > arr[i + 1]) { std::swap<T>(arr[i], arr[i + 1]); redo = true; } } while (redo == true); }?
-
Firefighter schrieb:
Meine Frage ist nun, hängt das mit der Bubblesortmethode zusammen oder mit was anderem?
Schonmal mit nem Debugger durchgegangen und die Stelle, an der der Fehler passiert, eingegrenzt? Dann wüsstest du bereits wo der Fehler liegt. Vermutlich siehst du dann auch direkt welche Werte da nicht korrekt sind.
Gruß
Don06