Kombinationen (nCr) in C berechnen

CCBeginner
Jetzt üben

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

Einführung

In diesem Lab lernen Sie, wie Sie Kombinationen (nCr) mit einem C-Programm berechnen. Das Lab umfasst zwei Hauptschritte: das Einlesen der Eingabewerte für n und r und die anschließende Implementierung der Formel zur Berechnung der Kombination nCr = n! / (r! * (n-r)!). Am Ende dieses Labs haben Sie ein funktionierendes C-Programm, das Kombinationen für beliebige Werte von n und r berechnen kann.

Das Lab beginnt mit der Demonstration, wie Sie die Eingabewerte für n und r mithilfe der Funktion scanf() einlesen. Anschließend wird die Implementierung von Fakultäts- und Kombinationsberechnungsfunktionen vorgestellt, die zur Berechnung des Endergebnisses verwendet werden. Das Lab bietet den vollständigen Code und Schritt-für-Schritt-Anleitungen, damit Sie die Konzepte leicht nachvollziehen und in Ihren eigenen Projekten anwenden können.

n und r einlesen

In diesem Schritt lernen Sie, wie Sie Eingabewerte für n und r einlesen, um Kombinationen in einem C-Programm zu berechnen.

Erstellen Sie zunächst eine neue C-Datei für Ihr Kombinationsberechnungsprogramm:

cd ~/project
nano combinations.c

Fügen Sie nun den folgenden Code hinzu, um Eingabewerte einzulesen:

#include <stdio.h>

int main() {
    int n, r;

    // Benutzeraufforderung zur Eingabe von Werten für n und r
    printf("Geben Sie den Wert von n ein: ");
    scanf("%d", &n);

    printf("Geben Sie den Wert von r ein: ");
    scanf("%d", &r);

    // Ausgabe der eingegebenen Werte zur Überprüfung der Eingabe
    printf("Sie haben n = %d und r = %d eingegeben\n", n, r);

    return 0;
}

Kompilieren und führen Sie das Programm aus, um die Eingabe zu testen:

gcc combinations.c -o combinations
./combinations

Beispielausgabe:

Geben Sie den Wert von n ein: 5
Geben Sie den Wert von r ein: 3
Sie haben n = 5 und r = 3 eingegeben

Dieser Code zeigt, wie man:

  • scanf() verwendet, um ganzzahlige Eingaben vom Benutzer zu lesen
  • den Benutzer auffordert, Werte für n und r einzugeben
  • die eingegebenen Werte ausgibt, um die korrekte Eingabe zu bestätigen

Der Code legt den Grundstein für die Berechnung von Kombinationen, indem er zunächst die notwendigen Eingabewerte n und r erfasst.

nCr = n!/(r!(n-r)!) berechnen

In diesem Schritt implementieren Sie eine Funktion zur Berechnung der Fakultät und berechnen Kombinationen mithilfe der Formel nCr = n! / (r! * (n-r)!).

Öffnen Sie die vorherige Datei combinations.c und aktualisieren Sie sie mit den Funktionen zur Fakultäts- und Kombinationsberechnung:

cd ~/project
nano combinations.c

Fügen Sie den folgenden Code hinzu, um Fakultäts- und Kombinationsberechnungen zu implementieren:

#include <stdio.h>

// Funktion zur Berechnung der Fakultät
unsigned long long factorial(int num) {
    if (num == 0 || num == 1) {
        return 1;
    }

    unsigned long long result = 1;
    for (int i = 2; i <= num; i++) {
        result *= i;
    }

    return result;
}

// Funktion zur Berechnung von Kombinationen (nCr)
unsigned long long combinations(int n, int r) {
    // Eingabevalidierung
    if (r > n) {
        return 0;
    }

    // Verwendung der Kombinationsformel: nCr = n! / (r! * (n-r)!)
    unsigned long long numerator = factorial(n);
    unsigned long long denominator = factorial(r) * factorial(n - r);

    return numerator / denominator;
}

int main() {
    int n, r;

    // Aufforderung an den Benutzer, Werte für n und r einzugeben
    printf("Geben Sie den Wert von n ein: ");
    scanf("%d", &n);

    printf("Geben Sie den Wert von r ein: ");
    scanf("%d", &r);

    // Berechnung und Ausgabe der Kombination
    unsigned long long result = combinations(n, r);

    printf("Kombination C(%d, %d) = %llu\n", n, r, result);

    return 0;
}

Kompilieren und ausführen des Programms:

gcc combinations.c -o combinations
./combinations

Beispielausgabe:

Geben Sie den Wert von n ein: 5
Geben Sie den Wert von r ein: 3
Kombination C(5, 3) = 10

Wichtige Punkte dieser Implementierung:

  • Die Funktion factorial() berechnet die Fakultät einer gegebenen Zahl.
  • Die Funktion combinations() implementiert die Kombinationsformel.
  • Verwendet unsigned long long, um größere Fakultätsberechnungen zu verarbeiten.
  • Validiert die Eingabe, um ungültige Kombinationen zu vermeiden.

Ergebnis ausgeben

In diesem Schritt erweitern Sie das Kombinationsberechnungsprogramm, indem Sie aussagekräftigere Ausgaben und Fehlerbehandlung hinzufügen.

Öffnen Sie die Datei combinations.c und ändern Sie den Code:

cd ~/project
nano combinations.c

Aktualisieren Sie den Code mit verbesserter Ergebnisanzeige und Eingabevalidierung:

#include <stdio.h>

// Vorherige Fakultäts- und Kombinationsfunktionen bleiben gleich

int main() {
    int n, r;

    // Aufforderung an den Benutzer, Werte für n und r einzugeben
    printf("Kombinationsrechner (nCr)\n");
    printf("-------------------------\n");

    // Eingabevalidierung
    do {
        printf("Geben Sie die Gesamtzahl der Elemente (n) ein: ");
        scanf("%d", &n);

        if (n < 0) {
            printf("Fehler: n muss eine nicht-negative ganze Zahl sein.\n");
        }
    } while (n < 0);

    do {
        printf("Geben Sie die Anzahl der auszuwählenden Elemente (r) ein: ");
        scanf("%d", &r);

        if (r < 0 || r > n) {
            printf("Fehler: r muss zwischen 0 und n liegen.\n");
        }
    } while (r < 0 || r > n);

    // Kombination berechnen
    unsigned long long result = combinations(n, r);

    // Detaillierte Ergebnisanzeige
    printf("\nErgebnisübersicht:\n");
    printf("-----------------\n");
    printf("Gesamtzahl der Elemente (n): %d\n", n);
    printf("Auszuwählende Elemente (r): %d\n", r);
    printf("Mögliche Kombinationen (nCr): %llu\n", result);

    // Erklärung des Ergebnisses
    printf("\nInterpretation:\n");
    printf("----------------\n");
    printf("Es gibt %llu Möglichkeiten, %d Elemente aus einer Menge von %d Elementen auszuwählen.\n",
           result, r, n);

    return 0;
}

Kompilieren und ausführen des Programms:

gcc combinations.c -o combinations
./combinations

Beispielausgabe:

Kombinationsrechner (nCr)
-------------------------
Geben Sie die Gesamtzahl der Elemente (n) ein: 5
Geben Sie die Anzahl der auszuwählenden Elemente (r) ein: 3

Ergebnisübersicht:
-----------------
Gesamtzahl der Elemente (n): 5
Auszuwählende Elemente (r): 3
Mögliche Kombinationen (nCr): 10

Interpretation:
----------------
Es gibt 10 Möglichkeiten, 3 Elemente aus einer Menge von 5 Elementen auszuwählen.

Wichtige Verbesserungen:

  • Hinzugefügte Eingabevalidierung, um ungültige Eingaben zu verhindern.
  • Erweiterte Ausgabe mit detaillierter Ergebnisübersicht.
  • Bereitstellung einer Interpretation des Kombinationsergebnisses.

Zusammenfassung

In diesem Labor haben Sie gelernt, Eingabewerte für n und r zu lesen und anschließend die Kombinationen (nCr) mithilfe der Formel nCr = n! / (r! * (n-r)!) zu berechnen. Sie haben Funktionen implementiert, um die Fakultät und die Kombinationen zu berechnen, und diese Funktionen dann verwendet, um das Endergebnis zu berechnen. Die wichtigsten Schritte waren: 1) das Lesen der Eingabewerte für n und r und 2) die Berechnung der Kombinationen mithilfe der Formel und der Fakultätsfunktion.