Sortier Algoritmus geht nicht
-
Hi,
bin gerade dabei einen Sortieralgoritmus zu programmieren. Die Idee ist, dass
ein Element eines Feldes (insg. 6 Elemente) mit allen anderen Verglichen wird und wenn nötig getauscht werden. Dann zum nächsten Element welches wieder mit den restlichen verglichen wird.Vor einigen Tagen habe ich den Algoritmus unter Linux schon mal für ein char-Feld verwendet. Da hat es wunderbar geklappt.
Wieso nicht mit nem int-Feld?????
Zum Programm:
Der Sortieralgoritmus beginnt weiter unten. Ich poste hier einfach mal das ganze. Soll später ein Lotto-Programm werden (Beschäftigungs Therapie meiner Lehrer). Funktionen wie bubblesort o.ä. will ich nicht benutzen.
#include <iostream.h> void main() { int zufall[7]={0,0,0,0,0,0,0}; // Feld für 6aus49 und Zusatzzahl int cache; // Variable für Zwischenspeicherung der random Zahl int dummy=0; int temp; // Variable für Zwischenspeicherung beim Sortieren //--------------------------------------------------------------------------- // Generierung der Zufallszahlen und Verhindern des doppelten Vorkommens //--------------------------------------------------------------------------- for(int elemente = 0; elemente <= 6; elemente++) // Elemente zählt Anz. d. Zufallszahlen { randomize(); cache = random (48) +1; for(int index=0;index<=6;) // Schleife für Überprüfung auf doppelte Zahlen { if(zufall[index] == cache) { index = 0; cache = random (48) + 1; } else index++; } zufall[elemente] = cache; } //--------------------------------------------------------------------------- // Sortier Algoritmus / Aufsteigend sortieren //--------------------------------------------------------------------------- for(int zahl1 = 0; zahl1 <= 6; zahl1++) { for(int zahl2 = 1; zahl2 <= 6; zahl2++) { if(zufall[zahl1] >= zufall[zahl2]) { temp = zufall[zahl1]; zufall[zahl1] = zufall[zahl2]; zufall[zahl2] = temp; } } } while(dummy<=6) { cout << zufall[dummy] << endl; dummy++; } cin >> dummy; }
-
Du solltest schon ein paar mehr Informationen rausrücken, damit wir dir helfen können. Was genau funktioniert denn nicht?
btw:
Dein Code ist nicht korrekt. Statt <iostream.h> nimmt man <iostream>, und void main() ist int main().
-
sorry ich benutz den alten borland compiler.
leider lernen wir in der schule auch nicht nach iso standard zu programmieren.naja inzwischen funktionierts plötzlich.
ich hab keine ahnugn wieso.
hab NIX geändert nur ne leerzeile in ner schleife eingefügt und plötzlich hat ers mir mein int feld sortiert.
-
erstmal ist die einrückung ganz mieserabel, so wäre besser und übersichtlicher(die { kann man auch in ne eigene zeile schreiben, dann aber nicht eingerückt)
for(int zahl1 = 0; zahl1 <= 6; zahl1++){ for(int zahl2 = 1; zahl2 <= 6; zahl2++){ if(zufall[zahl1] >= zufall[zahl2]){ temp = zufall[zahl1]; zufall[zahl1] = zufall[zahl2]; zufall[zahl2] = temp; } } }
dein sort hat deutliche schwachstellen, ich verdeutliche es mal an einem beispiel:
int zufall[7]={3,6,1,2,4,5,7}; for(int zahl1 = 0; zahl1 <= 6; zahl1++){ for(int zahl2 = 1; zahl2 <= 6; zahl2++){ if(zufall[zahl1] >= zufall[zahl2]){ int temp = zufall[zahl1]; zufall[zahl1] = zufall[zahl2]; zufall[zahl2] = temp; } } } for(int i=0;i<7;++i){ cout<<zufall[i]<<endl; }
ausgabe:1765432