#include #include #include 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; int validInput = 0; while (!validInput) { printf("Wieviele Zufallswerte (1..10000): "); scanf("%d", &length); while (getchar() != '\n'); // Eingabepuffer leeren if (length <= 0 || length > 10000) { printf("Ungueltige Eingabe. Bitte geben Sie eine Zahl zwischen 1 und 10000 ein.\n"); } else { validInput = 1; } } int randomnumbers[length]; // Array für die Zufallszahlen // Zufallszahlengenerator initialisieren srand(time(NULL)); // Zufallszahlen erstellen randomnumbergenerator(randomnumbers, length); printf("Erzeugte Zufallszahlen: \n"); for (int i = 0; i < length; i++) { printf("%d ", randomnumbers[i]); } qsort(randomnumbers, length, sizeof(int), comp); // array, die Länge, Bits, vergleichsfunktion printf("\nSortierte Zufallszahlen: \n"); for (int i = 0; i < length; i++) { printf("%d ", randomnumbers[i]); } int result = findMostFrequent(randomnumbers, length); printf("\nModus: %d\nHaeufigkeit: %d\n", result, counted); return 0; } 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 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 findMostFrequent(int randomnumbers[], int n) { int maxCount = 0; int mostFrequent = randomnumbers[0]; 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++; } } if (count > maxCount) { maxCount = count; mostFrequent = randomnumbers[i]; } } counted = maxCount; return mostFrequent; }