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