This commit is contained in:
Bora Zuenbuelkoek 2025-04-11 07:30:42 +02:00
parent 7f0df4d9ff
commit 3acc28eeb2

68
modus.c
View File

@ -2,9 +2,11 @@
#include <stdlib.h> #include <stdlib.h>
#include <time.h> #include <time.h>
void erstelleZufallszahlen(int *array, int size); void randomnumbergenerator(int *randomnumbers, int length);
int vergleiche(const void *a, const void *b); int comp(const void* a,const void* b);
int findeModus(int *array, int size); int findMostFrequent(int randomnumbers[], int n);
int counted = 0;
int main() { int main() {
int length = 0; int length = 0;
@ -27,61 +29,53 @@ int main() {
srand(time(NULL)); srand(time(NULL));
// Zufallszahlen erstellen // Zufallszahlen erstellen
erstelleZufallszahlen(randomnumbers, length); randomnumbergenerator(randomnumbers, length);
// Zufallszahlen ausgeben printf("Erzeugte Zufallszahlen: \n");
printf("Die generierten Zufallszahlen sind:\n");
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
printf("%d ", randomnumbers[i]); printf("%d ", randomnumbers[i]);
} }
// Zufallszahlen sortieren qsort(randomnumbers, length, sizeof(int), comp); // array, die Länge, Bits, vergleichsfunktion
qsort(randomnumbers, length, sizeof(int), vergleiche);
// Sortierte Zufallszahlen ausgeben printf("\nSortierte Zufallszahlen: \n");
printf("Die sortierten Zufallszahlen sind:\n");
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
printf("%d ", randomnumbers[i]); printf("%d ", randomnumbers[i]);
} }
// Modus berechnen int result = findMostFrequent(randomnumbers, length);
int modus = findeModus(randomnumbers, length);
printf("Der Modus der Zahlenreihe ist: %d\n", modus); printf("\nModus: %d\nHaeufigkeit: %d\n", result, counted);
return 0; return 0;
} }
void erstelleZufallszahlen(int *array, int size) { 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 < size; i++) { for (int i = 0; i < length; i++) {
*(array + i) = rand() % 100 + 1; // Zufallszahl zwischen 1 und 100 *(randomnumbers + i) = rand() % 99 + 1; // randomnumbers bekommt an jede i´te Stelle eine Zufallszahl
} }
} }
int vergleiche(const void *a, const void *b) { int comp(const void* a,const void* b) { // 1. Zahl und 2. Zahl
return (*(int *)a - *(int *)b); // Vergleichsfunktion für qsort 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 findMostFrequent(int randomnumbers[], int n) {
int modus = array[0]; int maxCount = 0;
int maxCount = 1; int mostFrequent = randomnumbers[0];
int currentCount = 1;
for (int i = 1; i < size; i++) { for (int i = 0; i < n; i++) {
if (array[i] == array[i - 1]) { int count = 0;
currentCount++; // Gleiche Zahl gefunden, Zähler erhöhen for (int j = 0; j < n; j++) {
} else { if (randomnumbers[j] == randomnumbers[i]) { // wenn Zahlen gleich geht count hoch
if (currentCount > maxCount) { count++;
maxCount = currentCount; // Neuer Modus gefunden
modus = array[i - 1];
} }
currentCount = 1; // Zähler zurücksetzen }
if (count > maxCount) {
maxCount = count;
mostFrequent = randomnumbers[i];
} }
} }
counted = maxCount;
// Letzte Zahl prüfen return mostFrequent;
if (currentCount > maxCount) {
modus = array[size - 1];
}
return modus;
} }