Probleme bei Hashtabelle mit Separate Chaining und Quicksort



  • Hey Leute,

    Ich studiere Informatik an der Uni Wien und mache gerade eine Übung bei der ich C++ programmieren muss.

    Auf meinem Rechner funktioniert alles einwandfrei, nur müssen wir das Programm dann bei dem sog. Unit-Test hochladen und der spuckt mir in meiner "apply-Methode" immer ein einen Segmentation Fault aus.

    Die Apply und Sort Methode sieht folgendermaßen aus:

    template <typename E, size_t N>
    size_t Chaining<E,N>::apply(std::function<void(const E&) > f, Order order) const {

    size_t rc = 0;

    if (order == dontcare) {
    try {
    for (size_t i = 0; i < tablesize; ++i) {
    node * help = values[i];
    while (help != nullptr) {
    f(help->data);
    ++rc;
    help = help->next;
    }
    }
    } catch (...) {}
    } else {

    E * sortvalues = new E[n];

    size_t x = 0;
    for (size_t i = 0 ; i < tablesize ; ++i) {
    node * help = values[i];

    while (help != nullptr) {
    sortvalues[x++] = help->data;
    help = help->next;
    }
    }

    sort(sortvalues, 0, n-1);

    try {
    if (order == descending) {
    for (size_t i = n; i-- 😉 {
    f(sortvalues[i]);
    ++rc;
    }
    } else {
    for (size_t i = 0; i < n; ++i) {
    f(sortvalues[i]);
    ++rc;
    }
    }
    } catch (...) {}

    delete[] sortvalues;
    }
    return rc;
    }

    template <typename E, size_t N>
    void Chaining<E,N>::sort(E* sortvalues, size_t l, size_t r) const {

    if (n > r) {

    size_t i, j;
    E pivot;

    if (r > l) {
    pivot = sortvalues[r];
    i = l-1;
    j = r;

    for (;;) {
    while (pivot > sortvalues[++i]);
    while (sortvalues[--j] > pivot) if (j == l) break;
    if (i >= j) break;
    std::swap (sortvalues[i], sortvalues[j]);
    }
    std::swap(sortvalues[i], sortvalues[r]);
    sort(sortvalues, l, i-1);
    sort(sortvalues, i+1, r);
    }
    }
    }



  • Codetags?
    Übersetbares Beispiel?
    Wozu dient das try/catch? Willst du da Speicherzugriffsfehler abfangen?
    Lässt du es "bei dir" im Debugger laufen?
    Mal mit eingeschaltetem Optimizer versucht?
    Welches Betriebssystem/Compiler überhaupt?



  • Scholler schrieb:

    Hey Leute,
    Ich studiere Informatik an der Uni Wien und mache gerade eine Übung bei der ich C++ programmieren muss.
    Auf meinem Rechner funktioniert alles einwandfrei, nur müssen wir das Programm dann bei dem sog. Unit-Test hochladen und der spuckt mir in meiner "apply-Methode" immer ein einen Segmentation Fault aus.

    Danke für die Info.


Log in to reply