Berechnung von Permutationen (nPr) in C

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 wir, Permutationen (nPr) in der C-Programmierung zu berechnen. Das Labor umfasst die folgenden Schritte:

Zuerst lesen wir die Eingabewerte für n und r, die für die Berechnung von Permutationen unerlässlich sind. Wir verwenden die Funktion scanf(), um die Eingabe vom Benutzer zu erhalten und die eingegebenen Werte zur Bestätigung der Eingabe auszugeben.

Als Nächstes implementieren wir Funktionen zur Berechnung der Fakultät und der Permutation (nPr) mithilfe der Formel nPr = n! / (n-r)!. Wir behandeln den Fall, in dem r größer als n ist, und geben entsprechend eine Fehlermeldung aus.

Eingabe von n und r

In diesem Schritt lernen wir, wie man Eingabewerte für n und r liest, die für die Berechnung von Permutationen in der C-Programmierung unerlässlich sind.

Erstellen wir zunächst eine neue C-Datei, um unser Programm zur Permutationsberechnung zu implementieren:

cd ~/project
nano permutations.c

Schreiben wir nun den Code zum Lesen der Eingabewerte:

#include <stdio.h>

int main() {
    int n, r;

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

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

    printf("Sie haben eingegeben: n = %d, r = %d\n", n, r);

    return 0;
}

Beispielausgabe:

Geben Sie die Gesamtzahl der Elemente (n) ein: 5
Geben Sie die Anzahl der auszuwählenden Elemente (r) ein: 3
Sie haben eingegeben: n = 5, r = 3

Zerlegung des Codes:

  • Wir verwenden scanf(), um ganzzahlige Eingaben vom Benutzer zu lesen.
  • %d ist der Formatbezeichner für ganze Zahlen.
  • &n und &r sind die Speicheradressen, in denen die Eingabewerte gespeichert werden.
  • Wir geben die eingegebenen Werte aus, um die Eingabe zu bestätigen.

Kompilieren und ausführen des Programms:

gcc permutations.c -o permutations
./permutations

Berechnung von nPr = n!/(n-r)!

In diesem Schritt implementieren wir eine Funktion zur Berechnung der Permutation (nPr) durch Berechnung der Fakultäten.

Ändern wir die vorherige Datei permutations.c, um die Fakultätsberechnung und die Permutationsberechnung hinzuzufügen:

cd ~/project
nano permutations.c

Aktualisieren wir nun den Code mit den Funktionen zur Fakultäts- und Permutationsberechnung:

#include <stdio.h>

// Funktion zur Fakultätsberechnung
unsigned long long factorial(int num) {
    unsigned long long result = 1;
    for (int i = 1; i <= num; i++) {
        result *= i;
    }
    return result;
}

// Funktion zur Permutationsberechnung (nPr)
unsigned long long permutation(int n, int r) {
    // Überprüfung der Eingabe auf Gültigkeit
    if (r > n) {
        printf("Fehler: r darf nicht größer als n sein\n");
        return 0;
    }

    // Berechnung von nPr nach der Formel: n! / (n-r)!
    return factorial(n) / factorial(n - r);
}

int main() {
    int n, r;

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

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

    unsigned long long result = permutation(n, r);

    if (result > 0) {
        printf("Permutation (nPr) von %d Elementen, wobei %d ausgewählt werden, ist: %llu\n", n, r, result);
    }

    return 0;
}

Kompilieren und ausführen des Programms:

gcc permutations.c -o permutations
./permutations

Beispielausgabe:

Geben Sie die Gesamtzahl der Elemente (n) ein: 5
Geben Sie die Anzahl der auszuwählenden Elemente (r) ein: 3
Permutation (nPr) von 5 Elementen, wobei 3 ausgewählt werden, ist: 60

Wichtige Punkte zur Implementierung:

  • Die Funktion factorial() berechnet die Fakultät einer gegebenen Zahl.
  • Die Funktion permutation() implementiert die Formel nPr: n! / (n-r)!
  • Wir verwenden unsigned long long, um größere Fakultätswerte zu verarbeiten.
  • Die Eingabeprüfung prüft, ob r kleiner oder gleich n ist.

Ausgabe des Ergebnisses

In diesem Schritt erweitern wir unser Permutationsberechnungsprogramm um detailliertere Ausgabe- und Formatierungsoptionen.

Ändern wir die Datei permutations.c, um die Ergebnisdarstellung zu verbessern:

cd ~/project
nano permutations.c

Aktualisieren wir den Code mit einer verbesserten Ergebnisanzeige:

#include <stdio.h>

// Funktion zur Fakultätsberechnung
unsigned long long factorial(int num) {
    unsigned long long result = 1;
    for (int i = 1; i <= num; i++) {
        result *= i;
    }
    return result;
}

// Funktion zur Permutationsberechnung (nPr)
unsigned long long permutation(int n, int r) {
    // Überprüfung der Eingabe auf Gültigkeit
    if (r > n) {
        printf("Fehler: r darf nicht größer als n sein\n");
        return 0;
    }

    // Berechnung von nPr nach der Formel: n! / (n-r)!
    return factorial(n) / factorial(n - r);
}

// Funktion zum Drucken detaillierter Permutationsinformationen
void printPermutationDetails(int n, int r, unsigned long long result) {
    printf("\n--- Details zur Permutationsberechnung ---\n");
    printf("Gesamtzahl der Elemente (n): %d\n", n);
    printf("Anzahl der ausgewählten Elemente (r): %d\n", r);
    printf("Berechnung: %d P %d = %d! / (%d - %d)!\n", n, r, n, n, r);
    printf("Ergebnis: %llu verschiedene Anordnungen möglich\n", result);
    printf("----------------------------------------\n");
}

int main() {
    int n, r;

    printf("Permutationsrechner (nPr)\n");
    printf("Geben Sie die Gesamtzahl der Elemente (n) ein: ");
    scanf("%d", &n);

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

    unsigned long long result = permutation(n, r);

    if (result > 0) {
        printPermutationDetails(n, r, result);
    }

    return 0;
}

Kompilieren und ausführen des Programms:

gcc permutations.c -o permutations
./permutations

Beispielausgabe:

Permutationsrechner (nPr)
Geben Sie die Gesamtzahl der Elemente (n) ein: 5
Geben Sie die Anzahl der auszuwählenden Elemente (r) ein: 3

--- Details zur Permutationsberechnung ---
Gesamtzahl der Elemente (n): 5
Anzahl der ausgewählten Elemente (r): 3
Berechnung: 5 P 3 = 5! / (5 - 3)!
Ergebnis: 60 verschiedene Anordnungen möglich
----------------------------------------

Verbesserungen:

  • Hinzufügen einer dedizierten Funktion printPermutationDetails()
  • Umfangreichere Ausgabe zur Berechnung
  • Erklärung der Permutationsformel und des Ergebnisses
  • Verbesserte Benutzeroberfläche mit Titel und detaillierter Erklärung

Zusammenfassung

In diesem Labor haben wir gelernt, wie man Eingabewerte für n und r liest, die für die Berechnung von Permutationen in der C-Programmierung unerlässlich sind. Wir haben auch Funktionen implementiert, um die Fakultät und die Permutation (nPr) mithilfe der Formel n! / (n-r)! zu berechnen.

Die wichtigsten Lernpunkte sind die Verwendung von scanf() zum Lesen ganzzahliger Eingaben, die Implementierung von Fakultäts- und Permutationsberechnungsfunktionen und die Behandlung ungültiger Eingaben, bei denen r größer als n ist.