Info2P5/modus2.c
2025-04-10 20:42:48 +02:00

88 lines
2.3 KiB
C

#include <stdio.h>
#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);
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
erstelleZufallszahlen(randomnumbers, length);
// Zufallszahlen ausgeben
printf("Die generierten Zufallszahlen sind:\n");
for (int i = 0; i < length; i++) {
printf("%d ", randomnumbers[i]);
}
// Zufallszahlen sortieren
qsort(randomnumbers, length, sizeof(int), vergleiche);
// Sortierte Zufallszahlen ausgeben
printf("Die sortierten Zufallszahlen sind:\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);
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
}
}
int vergleiche(const void *a, const void *b) {
return (*(int *)a - *(int *)b); // Vergleichsfunktion für qsort
}
int findeModus(int *array, int size) {
int modus = array[0];
int maxCount = 1;
int currentCount = 1;
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];
}
currentCount = 1; // Zähler zurücksetzen
}
}
// Letzte Zahl prüfen
if (currentCount > maxCount) {
modus = array[size - 1];
}
return modus;
}