halo
This commit is contained in:
parent
7f0df4d9ff
commit
3acc28eeb2
70
modus.c
70
modus.c
@ -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;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user