Veröffentlicht 12. November 201014 j 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
12. November 201014 j 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.
12. November 201014 j 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?
12. November 201014 j 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.
12. November 201014 j aber es werden nicht alle zahlen bis zum ende sortiert und einige "verschwinden" auch. woran leigt das?
12. November 201014 j 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?
12. November 201014 j 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?
12. November 201014 j hast du ne ahnung wie ich damit anfagen könnte?Hab ich. Aber mach dir ruhig erst einmal selbst ein paar Gedanken
12. November 201014 j 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]?
13. November 201014 j 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 201014 j von lilith2k3
13. November 201014 j values[5]= _1_ values[4]= _2_ values[3]= _3_ values[2]= _4_ values[1]= _5_ richtig? XD
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.