Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h> //header Dateien werden importiert, damit alle funktionen funktionieren
- #include <stdlib.h>//header Dateien werden importiert, damit alle funktionen funktionieren
- #include <time.h>//header Dateien werden importiert, damit alle funktionen funktionieren
- void sortieren(int *a, int elemente) //Funktion zum sortieren des Arrays wird erstellt
- {
- int i, i_weiter, w, w_klein; //initialisierung der Variablen "i", "i_weiter", "w" & "w_klein"
- for(i = 0; i < elemente; i++) //Schleife: solange bis jede Position des Arrays durchlaufen wurde; "i++" -> bei jedem durchgang der schleife wird i um 1 erhöht (i = i+ 1)
- {
- w = i; // w wird auf den index i gesetzt
- for(i_weiter = i+1; i_weiter <= elemente;i_weiter++) //schleife: solange bis i_weiter(i_weiter= i+1) so groß ist wie elemente(also größe des arrays der rentiere), "i_weiter++" -> wird bei jedem durchgang der schleife um 1 erhöht, wie oben
- {
- if(a[i_weiter] < a[w])// überprüfe ob der wert von "i_weiter"(also, einer "mehr" als i (i_weiter = i + 1)) kleiner als w (w = i) ist.
- w=i_weiter; //falls ja, dann setze "w" auf "i_weiter" (das ist dann der kleinste gefundene Wert aktuell)
- }
- if(w != i) //wenn der kleinste w ungleich i sein sollte, also wenn fertig sortiert ist, dann
- {
- w_klein=a[w]; //setze den Wert "w_klein" auf den Wert des Arrays "a" an der Stelle "w"
- a[w]=a[i]; //setze den Wert des Arrays "a" an der stelle "w" auf den wert von dem array "a" an der Stelle "i"
- a[i]=w_klein; //setze den Wert des Arrays "a" an der Stelle "i" auf den Wert von "w_klein"
- printf("Neue Reihenfolge: "); // Es wird ausgegeben: "Neue Reihenfolge: "
- for(int i = 0; i <= elemente; i++) //schleife: solange bis jede position des arrays "a" durchlaufen wurde
- {
- if(i == elemente) //wenn der index "i" auf der letzten position des arrays "a", dann
- {
- printf("%d", a[i]); //gebe den wert des arrays "a" an der position "i" position aus, aber ohne "-" wie unten -> sieht besser aus, weil sonst bsp: 2 - 3 - 1 - 6 - 2 - 7 - 4 -
- }
- else
- {
- printf("%d - ", a[i]); //gebe den wert des arrays "a" an der position "i" aus, aber mit "-" -> damit zwischen jeder zahl ein "-" ist.
- }
- }
- printf("\n"); // nach jeder neuen Reihenfolge einen Absatz
- }
- }
- printf("\nDie sortierte Reihenfolge der Rentiere lautet: "); // wenn die Sortierschleife fertig ist, dann gebe den Text aus
- for(int i = 0; i <= elemente; i++) // hier das gleiche wie in zeile 29-42
- {
- if(i == elemente)
- {
- printf("%d", a[i]);
- }
- else
- {
- printf("%d - ", a[i]);
- }
- }
- printf("\n");
- }
- int zZ() // funktion zum generieren der zufallszahl wird erstellt
- {
- //formel für random gerader zahl zwischen 4 und 32: (rand_min / 2) + rand() % ((rand_max - rand_min + 2) / 2)) * 2
- int zufall = ((4/2) + rand() % ((32-4+2)/2))*2; //zufallszahl generieren: gerade Zahl zwischen 4-32
- return zufall; //generierte zufallszahl returnen
- }
- int main() //main methode -> wird immer beim start des programmes ausgeführt
- {
- srand(time(0)); //random-seed auf aktuelle Zeit setzen -> immer andere Zufallszahlen
- int rentier[10] = {zZ(), zZ(), zZ(), zZ(), zZ(),zZ(), zZ(), zZ(), zZ(), zZ()}; //unsortiertes array fuer rentiere wird erstelt, dabei wird die funktion zZ() 10 mal aufgerufen, also fuer jede position des arrays ein mal
- int rentier_length = (sizeof(rentier) / sizeof(int)); //laenge des Arrays wird definiert. sizeof(rentier) gibt die groesse des arrays in Bytes wieder, deswegen / "durch" sizeof(int) also, durch die groesse jedes elementes in bytes
- printf("Zufaelliges Array der Rentiere generiert: "); //Array ausgeben
- for(int i = 0; i < rentier_length; i++) //schleife: solange index "i" kleiner als "rentier_length" ist, und bei jedem durchlauf wird einmal i um 1 erhöht
- {
- if(i == rentier_length - 1) //schaue, ob i gleich "rentier_lengtgh" minus 1 ist. -> minus eins, weil sonst bis zur 10 gezaehlt wird, rentier[10] ist aber leer, weil arrays schon bei a[0]beginnen (also a[0] bis a[9]). die laenge ist aber trotzdem = 10
- {
- printf("%d", rentier[i]); //gebe wert des arrays an der position "i" aus, ohne "-"
- }
- else
- {
- printf("%d - ", rentier[i]);//gebe wert des arrays an der position "i" aus, mit "-"
- }
- }
- printf("\n"); //absatz printen
- printf("Die Rentiere werden nun anhand ihrer Groesse sortiert.\n\n"); //text printen
- sortieren(rentier, rentier_length - 1); //Sortierfunktion aufrufen und Parameter(array und arraylaenge - 1) uebergeben -> minus eins, weil sonst bis zur 10 gezaehlt wird, rentier[10] ist aber leer, weil arrays schon bei a[0]beginnen (also a[0] bis a[9]). die laenge ist aber trotzdem = 10
- getchar(); // es wird am ende vom benutzer eine eingabe erwartet -> so schliesst das programm nicht direkt, wenn es mit dem sortieren fertig ist,sondern erst wenn irgendeine eingabe vom benutzer erfolg ist
- return 0; //rueckgabe von main, damit funktion endet(da die funktion "int main()" heisst, ist der erwartete rückgabewert "int", also z.B. 0"
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement