88 lines
2.3 KiB
C
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;
|
|
}
|