Advertisement
Guest User

Untitled

a guest
Dec 13th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.58 KB | None | 0 0
  1. #include <stdio.h> //header Dateien werden importiert, damit alle funktionen funktionieren
  2. #include <stdlib.h>//header Dateien werden importiert, damit alle funktionen funktionieren
  3. #include <time.h>//header Dateien werden importiert, damit alle funktionen funktionieren
  4.  
  5.  
  6.  
  7. void sortieren(int *a, int elemente) //Funktion zum sortieren des Arrays wird erstellt
  8. {
  9.  
  10. int i, i_weiter, w, w_klein; //initialisierung der Variablen "i", "i_weiter", "w" & "w_klein"
  11.  
  12. 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)
  13. {
  14. w = i; // w wird auf den index i gesetzt
  15. 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
  16. {
  17. 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.
  18. w=i_weiter; //falls ja, dann setze "w" auf "i_weiter" (das ist dann der kleinste gefundene Wert aktuell)
  19. }
  20.  
  21. if(w != i) //wenn der kleinste w ungleich i sein sollte, also wenn fertig sortiert ist, dann
  22. {
  23. w_klein=a[w]; //setze den Wert "w_klein" auf den Wert des Arrays "a" an der Stelle "w"
  24. 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"
  25. a[i]=w_klein; //setze den Wert des Arrays "a" an der Stelle "i" auf den Wert von "w_klein"
  26.  
  27. printf("Neue Reihenfolge: "); // Es wird ausgegeben: "Neue Reihenfolge: "
  28.  
  29. for(int i = 0; i <= elemente; i++) //schleife: solange bis jede position des arrays "a" durchlaufen wurde
  30. {
  31. if(i == elemente) //wenn der index "i" auf der letzten position des arrays "a", dann
  32. {
  33. 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 -
  34. }
  35.  
  36. else
  37. {
  38. printf("%d - ", a[i]); //gebe den wert des arrays "a" an der position "i" aus, aber mit "-" -> damit zwischen jeder zahl ein "-" ist.
  39. }
  40. }
  41.  
  42. printf("\n"); // nach jeder neuen Reihenfolge einen Absatz
  43. }
  44.  
  45. }
  46. printf("\nDie sortierte Reihenfolge der Rentiere lautet: "); // wenn die Sortierschleife fertig ist, dann gebe den Text aus
  47.  
  48. for(int i = 0; i <= elemente; i++) // hier das gleiche wie in zeile 29-42
  49. {
  50. if(i == elemente)
  51. {
  52. printf("%d", a[i]);
  53. }
  54.  
  55. else
  56. {
  57. printf("%d - ", a[i]);
  58. }
  59. }
  60.  
  61. printf("\n");
  62. }
  63.  
  64.  
  65.  
  66.  
  67. int zZ() // funktion zum generieren der zufallszahl wird erstellt
  68. {
  69.  
  70. //formel für random gerader zahl zwischen 4 und 32: (rand_min / 2) + rand() % ((rand_max - rand_min + 2) / 2)) * 2
  71. int zufall = ((4/2) + rand() % ((32-4+2)/2))*2; //zufallszahl generieren: gerade Zahl zwischen 4-32
  72. return zufall; //generierte zufallszahl returnen
  73. }
  74.  
  75.  
  76.  
  77. int main() //main methode -> wird immer beim start des programmes ausgeführt
  78. {
  79. srand(time(0)); //random-seed auf aktuelle Zeit setzen -> immer andere Zufallszahlen
  80.  
  81. 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
  82. 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
  83.  
  84.  
  85.  
  86.  
  87.  
  88. printf("Zufaelliges Array der Rentiere generiert: "); //Array ausgeben
  89. 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
  90. {
  91. 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
  92. {
  93. printf("%d", rentier[i]); //gebe wert des arrays an der position "i" aus, ohne "-"
  94. }
  95.  
  96. else
  97. {
  98. printf("%d - ", rentier[i]);//gebe wert des arrays an der position "i" aus, mit "-"
  99. }
  100. }
  101.  
  102. printf("\n"); //absatz printen
  103. printf("Die Rentiere werden nun anhand ihrer Groesse sortiert.\n\n"); //text printen
  104.  
  105.  
  106.  
  107. 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
  108.  
  109.  
  110. 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
  111. return 0; //rueckgabe von main, damit funktion endet(da die funktion "int main()" heisst, ist der erwartete rückgabewert "int", also z.B. 0"
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement