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

70
modus.c
View File

@ -2,9 +2,11 @@
#include <stdlib.h>
#include <time.h>
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;
}