Modalwert eines Datensatzes in C bestimmen

CCBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Labor lernen Sie, wie Sie den Modalwert einer Datenmenge in C bestimmen. Das Labor umfasst die folgenden Schritte:

Lesen des Zahlenarrays: Sie lernen, wie Sie ein Zahlenarray in C lesen, was der erste entscheidende Schritt zur Bestimmung des Modalwerts einer Datenmenge ist. Das Programm ermöglicht die Eingabe einer Reihe von Zahlen und bereitet diese für die Häufigkeitsanalyse vor.

Zählen der Häufigkeiten, um den häufigsten Wert zu finden: Sie modifizieren das vorherige Programm, um die Häufigkeiten jeder Zahl im Array zu zählen und den häufigsten Wert (Modalwert) zu identifizieren.

Ausgabe des Modalwerts: Schließlich geben Sie den Modalwert aus, der der Wert ist, der in der Datenmenge am häufigsten vorkommt.

Das Zahlenarray einlesen

In diesem Schritt lernen Sie, wie Sie ein Zahlenarray in C einlesen, ein entscheidender erster Schritt zur Bestimmung des Modalwerts einer Datenmenge. Wir erstellen ein C-Programm, das die Eingabe einer Reihe von Zahlen ermöglicht und diese für die Häufigkeitsanalyse vorbereitet.

Erstellen Sie zunächst eine neue C-Datei für unser Programm zur Modalwert-Berechnung:

cd ~/project
nano mode_calculation.c

Fügen Sie nun folgenden Code in die Datei ein:

#include <stdio.h>

#define MAX_SIZE 100

int main() {
    int numbers[MAX_SIZE];
    int n, i;

    // Geben Sie die Anzahl der Elemente ein
    printf("Geben Sie die Anzahl der Elemente ein (max %d): ", MAX_SIZE);
    scanf("%d", &n);

    // Geben Sie die Arrayelemente ein
    printf("Geben Sie %d ganze Zahlen ein:\n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &numbers[i]);
    }

    // Geben Sie das eingegebene Array aus, um die Eingabe zu überprüfen
    printf("Eingabe-Array: ");
    for (i = 0; i < n; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");

    return 0;
}

Kompilieren und führen Sie das Programm aus:

gcc mode_calculation.c -o mode_calculation
./mode_calculation

Beispielausgabe:

Geben Sie die Anzahl der Elemente ein (max 100): 5
Geben Sie 5 ganze Zahlen ein:
3 4 2 4 1
Eingabe-Array: 3 4 2 4 1

Lassen Sie uns die wichtigsten Teile dieses Codes aufschlüsseln:

  1. #define MAX_SIZE 100 legt eine maximale Grenze für das Array fest, um Überläufe zu vermeiden.
  2. scanf() wird verwendet, um die Anzahl der Elemente und die Arraywerte einzugeben.
  3. Wir geben das Array aus, um zu überprüfen, ob die Eingabe korrekt erfasst wurde.

Der Code demonstriert die grundlegende Array-Eingabe in C, die für unseren Modalwert-Berechnungsprozess unerlässlich ist. In den nächsten Schritten erweitern wir dies, um Häufigkeiten zu zählen und den Modalwert zu bestimmen.

Häufigkeiten zählen, um den häufigsten Wert zu finden

In diesem Schritt modifizieren wir unser vorheriges Programm, um die Häufigkeiten jeder Zahl im Array zu zählen und den häufigsten Wert (Modalwert) zu ermitteln.

Öffnen Sie die vorhandene Datei und aktualisieren Sie den Code:

cd ~/project
nano mode_calculation.c

Ersetzen Sie den vorherigen Code durch die folgende Implementierung:

#include <stdio.h>

#define MAX_SIZE 100

int main() {
    int numbers[MAX_SIZE];
    int frequencies[MAX_SIZE] = {0};
    int n, i, j, mode = 0, max_frequency = 0;

    // Geben Sie die Anzahl der Elemente ein
    printf("Geben Sie die Anzahl der Elemente ein (max %d): ", MAX_SIZE);
    scanf("%d", &n);

    // Geben Sie die Arrayelemente ein
    printf("Geben Sie %d ganze Zahlen ein:\n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &numbers[i]);
    }

    // Zählen Sie die Häufigkeiten jeder Zahl
    for (i = 0; i < n; i++) {
        int count = 1;
        for (j = 0; j < n; j++) {
            if (i != j && numbers[i] == numbers[j]) {
                count++;
            }
        }
        frequencies[i] = count;

        // Verfolgen Sie den Modalwert
        if (count > max_frequency) {
            max_frequency = count;
            mode = numbers[i];
        }
    }

    // Häufigkeiten ausgeben
    printf("\nHäufigkeiten:\n");
    for (i = 0; i < n; i++) {
        printf("Zahl %d kommt %d Mal vor\n", numbers[i], frequencies[i]);
    }

    // Den Modalwert ausgeben
    printf("\nModalwert: %d (kommt %d Mal vor)\n", mode, max_frequency);

    return 0;
}

Kompilieren und ausführen des Programms:

gcc mode_calculation.c -o mode_calculation
./mode_calculation

Beispielausgabe:

Geben Sie die Anzahl der Elemente ein (max 100): 6
Geben Sie 6 ganze Zahlen ein:
2 3 4 2 2 5

Häufigkeiten:
2 kommt 3 Mal vor
3 kommt 1 Mal vor
4 kommt 1 Mal vor
2 kommt 3 Mal vor
2 kommt 3 Mal vor
5 kommt 1 Mal vor

Modalwert: 2 (kommt 3 Mal vor)

Wichtige Punkte in dieser Implementierung:

  1. Wir erstellen ein Array frequencies, um die Anzahl jeder Zahl zu speichern.
  2. Geschachtelte Schleifen zählen die Vorkommnisse jeder eindeutigen Zahl.
  3. Wir verfolgen den Modalwert, indem wir die maximale Häufigkeit verfolgen.
  4. Das Programm behandelt Fälle mit einem einzigen Modalwert.

Den Modalwert ausgeben

In diesem letzten Schritt erweitern wir unser Programm zur Modalwert-Berechnung, um mehrere Modalwerte zu handhaben und eine umfassendere Ausgabe statistischer Informationen zu liefern.

Öffnen Sie die vorhandene Datei und aktualisieren Sie den Code:

cd ~/project
nano mode_calculation.c

Ersetzen Sie den vorherigen Code durch die folgende Implementierung:

#include <stdio.h>

#define MAX_SIZE 100

int main() {
    int numbers[MAX_SIZE];
    int frequencies[MAX_SIZE] = {0};
    int unique_numbers[MAX_SIZE];
    int n, i, j, unique_count = 0, max_frequency = 0;

    // Geben Sie die Anzahl der Elemente ein
    printf("Geben Sie die Anzahl der Elemente ein (max %d): ", MAX_SIZE);
    scanf("%d", &n);

    // Geben Sie die Arrayelemente ein
    printf("Geben Sie %d ganze Zahlen ein:\n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &numbers[i]);
    }

    // Finden Sie eindeutige Zahlen und ihre Häufigkeiten
    for (i = 0; i < n; i++) {
        int is_unique = 1;
        for (j = 0; j < unique_count; j++) {
            if (numbers[i] == unique_numbers[j]) {
                is_unique = 0;
                break;
            }
        }

        if (is_unique) {
            unique_numbers[unique_count] = numbers[i];

            // Zählen Sie die Häufigkeit dieser eindeutigen Zahl
            int count = 0;
            for (j = 0; j < n; j++) {
                if (numbers[i] == numbers[j]) {
                    count++;
                }
            }
            frequencies[unique_count] = count;

            // Aktualisieren Sie die maximale Häufigkeit
            if (count > max_frequency) {
                max_frequency = count;
            }

            unique_count++;
        }
    }

    // Detaillierte Modalwertinformationen ausgeben
    printf("\nStatistische Analyse:\n");
    printf("Gesamtzahlen: %d\n", n);
    printf("Eindeutige Zahlen: %d\n", unique_count);

    printf("\nHäufigkeitsverteilung:\n");
    for (i = 0; i < unique_count; i++) {
        printf("Zahl %d: %d Mal(e)\n",
               unique_numbers[i], frequencies[i]);
    }

    // Modalwerte ausgeben
    printf("\nModalwert(e):\n");
    for (i = 0; i < unique_count; i++) {
        if (frequencies[i] == max_frequency) {
            printf("- %d (kommt %d Mal vor)\n",
                   unique_numbers[i], frequencies[i]);
        }
    }

    return 0;
}

Kompilieren und ausführen des Programms:

gcc mode_calculation.c -o mode_calculation
./mode_calculation

Beispielausgabe:

Geben Sie die Anzahl der Elemente ein (max 100): 7
Geben Sie 7 ganze Zahlen ein:
2 3 4 2 2 5 5

Statistische Analyse:
Gesamtzahlen: 7
Eindeutige Zahlen: 4

Häufigkeitsverteilung:
Zahl 2: 3 Mal(e)
Zahl 3: 1 Mal(e)
Zahl 4: 1 Mal(e)
Zahl 5: 2 Mal(e)

Modalwert(e):
- 2 (kommt 3 Mal vor)

Verbesserungen in dieser Version:

  1. Handhabung mehrerer Modalwerte, falls vorhanden
  2. Umfassende statistische Übersicht
  3. Identifizierung eindeutiger Zahlen in der Datenmenge
  4. Anzeige der Häufigkeitsverteilung

Zusammenfassung

In diesem Labor lernen Sie, wie Sie ein Zahlenarray in C einlesen und die Häufigkeiten jeder Zahl zählen, um den Modalwert, den häufigsten Wert im Datensatz, zu bestimmen. Zuerst erstellen Sie ein C-Programm, das die Eingabe einer Reihe von Zahlen ermöglicht und diese für die Häufigkeitsanalyse vorbereitet. Anschließend modifizieren Sie das Programm, um die Häufigkeiten jeder Zahl zu zählen und den Modalwert zu ermitteln. Schließlich geben Sie den Modalwert auf der Konsole aus.

Die wichtigsten Lernpunkte der abgeschlossenen Schritte sind:

  1. Wie man ein Zahlenarray in C mit der Funktion scanf() einliest.
  2. Wie man das eingegebene Array ausgibt, um die Eingabe zu verifizieren.
  3. Wie man die Häufigkeiten jeder Zahl im Array zählt, um den häufigsten Wert (Modalwert) zu finden.