83 lines
2.4 KiB
C
83 lines
2.4 KiB
C
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
#include <time.h>
|
||
|
||
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;
|
||
}
|
||
|