19chris88 Geschrieben 12. November 2010 Geschrieben 12. November 2010 Hallo, ich muss ein Programm schrieben in C und kommen nicht mehr weiter. Es soll ein Bubble sort mit zufallszahlen sein. Die zufallszahlen bekomme ich hin, aber es wird dann nichts sortiert. ich denke mal das ich in der do while schleife einen fehler habe. hier noch mein bisheriges programm #include <stdio.h> #include <stdlib.h> #include <time.h> #define Anzahl 10 #define true (1) #define false (0) int main(){ int i, x[Anzahl], temp, getauscht; srand(time(NULL)); // Zufallsgenerator auf zufälligen Startwert setzen for (i = 0; i < Anzahl; i++) { x[i] = rand()%10; // Zufallszahl zwischen 0 und 99 eintragen printf(" %3d ",x[i]); printf("\n\n"); } do{getauscht=0; for (i=0;i<= Anzahl; i++){ if (x[i] > x[i+1]) { temp=x[i]; x[i]=x[i+1]; x[i+1]=temp; getauscht=1; } printf(" %3d ", temp); } printf("\n"); } while(getauscht=0); system("pause"); return 0; } überhilfe bin ich sehr dankbar Zitieren
Klotzkopp Geschrieben 12. November 2010 Geschrieben 12. November 2010 while(getauscht=0); Das ist eine Zuweisung, kein Vergleich. Zitieren
19chris88 Geschrieben 12. November 2010 Autor Geschrieben 12. November 2010 okay, das ist mein 1. fehler habe es jetzt in getauscht > 0 geändert. richtig? Zitieren
Klotzkopp Geschrieben 12. November 2010 Geschrieben 12. November 2010 richtig?Ja. Ein weiterer Fehler ist, dass deine for-Schleife zu weit läuft. Der letzte erlaubte Index des Arrays x ist Anzahl-1. Deine Schleifenvariable i läuft bis (einschließlich) Anzahl, und da du mit i+1 auf das Array zugreifst, ist das um 2 zu hoch. Zitieren
19chris88 Geschrieben 12. November 2010 Autor Geschrieben 12. November 2010 okay, das klingt logisch, habe es jetzt geändert das "programm" läuft jetzt schon weiter als sonst, aber sortiert nicht alle zahlen bis zum ende durch das kommt zB wenn ich das programm starte 0 0 7 7 6 2 5 3 0 1 2011860181 0 0 7 6 2 5 3 0 1 7 0 0 6 2 5 3 0 1 7 7 0 0 2 5 3 0 1 6 7 6 0 0 2 3 0 1 5 6 7 5 0 0 2 0 1 3 5 6 7 3 0 0 0 1 2 3 5 6 7 2 0 0 0 1 2 3 5 6 7 Drücken Sie eine beliebige Taste . . . warum steht dort eig so eine lange zahl? Zitieren
Klotzkopp Geschrieben 12. November 2010 Geschrieben 12. November 2010 warum steht dort eig so eine lange zahl?Du gibst ja immer nur temp aus, deine Tauschvariable. Und falls beim ersten Vergleich nicht getauscht wird, weil die ersten beiden Zahlen in der richtigen Reihenfolge sind, wird temp ausgegeben, ohne dass dieser Variable jemals etwas zugewiesen wurde. Was dann da drin steht, ist mehr oder weniger zufällig. Zitieren
19chris88 Geschrieben 12. November 2010 Autor Geschrieben 12. November 2010 aber es werden nicht alle zahlen bis zum ende sortiert und einige "verschwinden" auch. woran leigt das? Zitieren
Klotzkopp Geschrieben 12. November 2010 Geschrieben 12. November 2010 woran leigt das?Das Programm funktioniert prima, soweit ich das sehen kann. Ist dir klar, dass du nur ganz am Anfang das Array ausgibst, und danach nur noch deine Tauschvariable? Zitieren
19chris88 Geschrieben 12. November 2010 Autor Geschrieben 12. November 2010 achso, ist mir gar nicht aufgefallen habe das verändert und jetzt geht es auch danke für deine hilfe jetzt hab ich noch ein weiteres problem ich soll jetzt ein weiteres programm schreiben wo die zufallszahlen nicht sortiert werden, sondern es soll ein zweites array erstellt werden wo die positionen der zahlen drin stehen. dieses array soll sortiert werden und dann mit hilfe des sortierten array sollen die zufallszahlen ausgegeben werden. hast du ne ahnung wie ich damit anfagen könnte? Zitieren
Klotzkopp Geschrieben 12. November 2010 Geschrieben 12. November 2010 hast du ne ahnung wie ich damit anfagen könnte?Hab ich. Aber mach dir ruhig erst einmal selbst ein paar Gedanken Zitieren
lilith2k3 Geschrieben 12. November 2010 Geschrieben 12. November 2010 ein Tip: wenn Du ein array values mit den Zahlen 5,4,3,2,1 hast und ein zweites keys mit den Zahlen 5,4,3,2,1 hast, was ergibt dann jeweils values[keys]? Zitieren
19chris88 Geschrieben 13. November 2010 Autor Geschrieben 13. November 2010 jeder zahl von values wird eine zahl von keys zugeordnet. Zitieren
lilith2k3 Geschrieben 13. November 2010 Geschrieben 13. November 2010 (bearbeitet) Das heißt, wenn wir eine Schleife haben, die alle Elemente von keys der Reihe nach durchläuft, haben wir bei keys, die Ausgabe 4,3,2,1,0, right? Und diese Werte wiederum in values eingesetzt, ergeben ...? Preisfrage *G* values[4]= ___ values[3]= ___ values[2]= ___ values[1]= ___ values[0]= ___ Edit: Keys muss natürlich die Zahlen von 0 - 4 beinhalten, damit es funktioniert ... Sorry :/ Bearbeitet 13. November 2010 von lilith2k3 Zitieren
19chris88 Geschrieben 13. November 2010 Autor Geschrieben 13. November 2010 values[5]= _1_ values[4]= _2_ values[3]= _3_ values[2]= _4_ values[1]= _5_ richtig? XD Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.