C++: Bubblesort für ein int-array gibt Fehler aus

Hallo,

ich habe ein Programm geschrieben, welches insgesamt 5 Zahlen einliest und diese in ein Integer-Array speichert.
Anschließend soll es diese mit Hilfe von Bubblesort sortieren.
Funktioniert auch soweit - außer wenn sich ein Wert nicht ändert . . .
Beispiel:
Eingabe: 21345
Richtiges Ergebnis: 12345
Ausgabe des Programmes: 12000

Hier ist mal der Quellcode:

//--------------------------

#include
#include
#include
#pragma hdrstop

//--------------------------

#pragma argsused
int main(int argc, char* argv[])
{
int Zahl[5];
int Erg[5];
int i, k;

cout > Zahl[0];
cout > Zahl[1];
cout > Zahl[2];
cout > Zahl[3];
cout > Zahl[4];

for (i = 0; i Zahl[k + 1])
{
int Save = Zahl[k];
Zahl[k] = Zahl[k + 1];
Zahl[k + 1] = Save;
Erg[k + 1] = Save;
Erg[k] = Zahl[k];
}
}
}

cout

Hi,

eigentlich hast Du das Problem selbst erkannt…Die Ausgabe stimmt nur, wenn sich ein Wert ändert… warum?
Wann wird denn Dein Erg-Arry gefüllt? Nur, wenn sich ein Wert ändert… schaue dir deine IF-Anweisung noch mal genau an…
Du brauchst da nicht das Erg-Arry zu füllen, weil das Array kann sich ja noch ändern…
Fülle das Erg-Array im Anschluss nach der zweiten ForSchleife, weil nachdem die innere For-Schlefe durch ist, ist der erste Wert des Arrays ja richtig…Allerdings musst du dann als Index I anstatt K verwenden…

Im Grunde brauchst du auch Erd-Array gar nicht und könntest stattdessen Dein Zahl-Array ausgeben, dann sollte es auch passen…

Viel Spaß beim Ausprobieren

Viele Grüße
Plucky

Hallo,
der Fehler liegt in deinen Schleifen. Die Lösung findest du hier:

http://de.wikibooks.org/wiki/Algorithmen_und_Datenst…

Unter Linux sieht dann der Quelltext so aus:

//#include
//#include
//#include
//#pragma hdrstop
#include
using namespace std;

//--------------------------

//#pragma argsused
int main(int argc, char* argv[])
{
int Zahl[5];
int Erg[5];
int i, k;

cout > Zahl[0];
cout > Zahl[1];
cout > Zahl[2];
cout > Zahl[3];
cout > Zahl[4];

for (i = 0; i Zahl[k + 1]){
int Save = Zahl[k];
Zahl[k] = Zahl[k + 1];
Zahl[k + 1] = Save;
Erg[k + 1] = Save;
Erg[k] = Zahl[k];
}
}
}

cout