Bubble Sort mit Array funktioniert nicht
-
Hallo und guten Tag,
da dies mein Erster Beitrag ist würde ich mich gerne erst einmal vorstellen.
Mein Name ist Michael und ich versuche mich seit ca. 2 Wochen an C++.Nun habe ich jedoch ein Problem bei dem ich selbst nach stundenlanger Suche keine Lösung finden will.
Und zwar will ich durch Bubble Sort float Werte nach Größe sortieren, jedem float wert aber 2 String Arrays zuordnen.
Die float Werte sind ebenfalls in einem Array.
Es sollte letztendlich eine Rangliste (nach Größe) der Werte entstehen.
Leider schaffe ich es nicht einmal, nur das float Array zu sortieren.
Dies sieht bei mir so aus:
void bubble_sort () { for (int x = 0; i < 5; ++x) for (float j = 0; j < 5 - x - 1; ++j) if (werte[j] > werte[j + 1]) { int temp = werte[j]; werte[j] = werte[j + 1]; werte[j + 1] = temp; } }Leider will es bei mir einfach nicht funktonieren.
Ich wäre sehr erfreut wenn mir jemand weiterhelfen könnte.
-
Hallo,
was soll dieser i und x Mix in der ersten Schleife?
Warum ist j ein float?
-
Oh man, das ist fast schon peinlich

Habe ich wohl übersehen.
-
Jockelx schrieb:
Warum ist j ein float?
Was mich zu der Frage führt (@TO): Hast du überhaupt mal versucht den Code zu compilieren? Das mit dem float als Arrayindex frisst der Compiler nämlich nicht und werte ist nicht definiert (oder weiter oben global?).
-
döööööööner schrieb:
Das mit dem float als Arrayindex frisst der Compiler nämlich nicht
? Klar kompiliert das, musst dich u.U. lediglich damit abfinden, dass aus deiner Zählschleife eine Endlosschleife wird.
döööööööner schrieb:
oder weiter oben global?
Aber hallo. Und
isicherlich auch. Zwecks Recycling, für die Umwelt und so.
-
qaw schrieb:
döööööööner schrieb:
Das mit dem float als Arrayindex frisst der Compiler nämlich nicht
? Klar kompiliert das, musst dich u.U. lediglich damit abfinden, dass aus deiner Zählschleife eine Endlosschleife wird.
Das musst du mir zeigen...
>type bubble.c int werte[42]; //fehlt, ohne stoppt der Compiler zu früh... void bubble_sort () { for (int x = 0; i < 5; ++x) for (float j = 0; j < 5 - x - 1; ++j) if (werte[j] > werte[j + 1]) { int temp = werte[j]; werte[j] = werte[j + 1]; werte[j + 1] = temp; } } >gcc -std=c99 -Wall bubble.c bubble.c: In function 'bubble_sort': bubble.c:7:19: error: 'i' undeclared (first use in this function) bubble.c:7:19: note: each undeclared identifier is reported only once for each function it appears in bubble.c:11:16: error: array subscript is not an integer bubble.c:11:27: error: array subscript is not an integer bubble.c:15:25: error: array subscript is not an integer bubble.c:17:14: error: array subscript is not an integer bubble.c:17:25: error: array subscript is not an integer bubble.c:19:14: error: array subscript is not an integer >gcc --version gcc (GCC) 4.7.2 Copyright (C) 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.