diff --git a/modus.c b/modus.c index 014637b..920b63b 100644 --- a/modus.c +++ b/modus.c @@ -2,9 +2,11 @@ #include #include -void erstelleZufallszahlen(int *array, int size); -int vergleiche(const void *a, const void *b); -int findeModus(int *array, int size); +void randomnumbergenerator(int *randomnumbers, int length); +int comp(const void* a,const void* b); +int findMostFrequent(int randomnumbers[], int n); + +int counted = 0; int main() { int length = 0; @@ -27,61 +29,53 @@ int main() { srand(time(NULL)); // Zufallszahlen erstellen - erstelleZufallszahlen(randomnumbers, length); + randomnumbergenerator(randomnumbers, length); - // Zufallszahlen ausgeben - printf("Die generierten Zufallszahlen sind:\n"); + printf("Erzeugte Zufallszahlen: \n"); for (int i = 0; i < length; i++) { printf("%d ", randomnumbers[i]); } - // Zufallszahlen sortieren - qsort(randomnumbers, length, sizeof(int), vergleiche); + qsort(randomnumbers, length, sizeof(int), comp); // array, die Länge, Bits, vergleichsfunktion - // Sortierte Zufallszahlen ausgeben - printf("Die sortierten Zufallszahlen sind:\n"); + printf("\nSortierte Zufallszahlen: \n"); for (int i = 0; i < length; i++) { printf("%d ", randomnumbers[i]); } - // Modus berechnen - int modus = findeModus(randomnumbers, length); - printf("Der Modus der Zahlenreihe ist: %d\n", modus); + int result = findMostFrequent(randomnumbers, length); + + printf("\nModus: %d\nHaeufigkeit: %d\n", result, counted); return 0; } -void erstelleZufallszahlen(int *array, int size) { - for (int i = 0; i < size; i++) { - *(array + i) = rand() % 100 + 1; // Zufallszahl zwischen 1 und 100 +void randomnumbergenerator(int *randomnumbers, int length) { // Zeiger, da man keinen neuen Speicher erstellen will sondern direkt auf die Stellen von randomnumbers zugreifen möchte + for (int i = 0; i < length; i++) { + *(randomnumbers + i) = rand() % 99 + 1; // randomnumbers bekommt an jede i´te Stelle eine Zufallszahl } } -int vergleiche(const void *a, const void *b) { - return (*(int *)a - *(int *)b); // Vergleichsfunktion für qsort +int comp(const void* a,const void* b) { // 1. Zahl und 2. Zahl + return *(int*)a - *(int*)b; // >0 wenn a größer b, <0 wenn b größer a, =0 wenn a gleich b } -int findeModus(int *array, int size) { - int modus = array[0]; - int maxCount = 1; - int currentCount = 1; +int findMostFrequent(int randomnumbers[], int n) { + int maxCount = 0; + int mostFrequent = randomnumbers[0]; - for (int i = 1; i < size; i++) { - if (array[i] == array[i - 1]) { - currentCount++; // Gleiche Zahl gefunden, Zähler erhöhen - } else { - if (currentCount > maxCount) { - maxCount = currentCount; // Neuer Modus gefunden - modus = array[i - 1]; + for (int i = 0; i < n; i++) { + int count = 0; + for (int j = 0; j < n; j++) { + if (randomnumbers[j] == randomnumbers[i]) { // wenn Zahlen gleich geht count hoch + count++; } - currentCount = 1; // Zähler zurücksetzen + } + if (count > maxCount) { + maxCount = count; + mostFrequent = randomnumbers[i]; } } - - // Letzte Zahl prüfen - if (currentCount > maxCount) { - modus = array[size - 1]; - } - - return modus; -} + counted = maxCount; + return mostFrequent; +} \ No newline at end of file