19chris88 Geschrieben 12. November 2010 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 12. November 2010 Teilen Geschrieben 12. November 2010 while(getauscht=0); Das ist eine Zuweisung, kein Vergleich. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
19chris88 Geschrieben 12. November 2010 Autor Teilen Geschrieben 12. November 2010 okay, das ist mein 1. fehler habe es jetzt in getauscht > 0 geändert. richtig? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 12. November 2010 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
19chris88 Geschrieben 12. November 2010 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 12. November 2010 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
19chris88 Geschrieben 12. November 2010 Autor Teilen Geschrieben 12. November 2010 aber es werden nicht alle zahlen bis zum ende sortiert und einige "verschwinden" auch. woran leigt das? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 12. November 2010 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
19chris88 Geschrieben 12. November 2010 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 12. November 2010 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lilith2k3 Geschrieben 12. November 2010 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
19chris88 Geschrieben 13. November 2010 Autor Teilen Geschrieben 13. November 2010 jeder zahl von values wird eine zahl von keys zugeordnet. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lilith2k3 Geschrieben 13. November 2010 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
19chris88 Geschrieben 13. November 2010 Autor Teilen Geschrieben 13. November 2010 values[5]= _1_ values[4]= _2_ values[3]= _3_ values[2]= _4_ values[1]= _5_ richtig? XD Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.