Calculer les permutations et les combinaisons en langage C

CBeginner
Pratiquer maintenant

Introduction

La permutation et la combinaison sont deux concepts mathématiques différents. La permutation est l'arrangement d'objets dans un ordre spécifique. La combinaison est une sélection d'objets à partir d'un ensemble sans tenir compte de l'ordre des objets sélectionnés. Dans ce laboratoire, nous allons apprendre à calculer la permutation et la combinaison à l'aide du langage C.

Écrire la fonction principale

Tout d'abord, créons un nouveau fichier nommé main.c dans le répertoire ~/project/ et écrivons le code initial pour inclure les fichiers d'en-tête et la fonction principale.

#include <stdio.h>

int main() {
    printf("Permutation et combinaison en langage C\n\n");
    // Le code pour le calcul de la permutation et de la combinaison sera ajouté ici
    return 0;
}

Écrire la fonction factorielle

Pour calculer la permutation et la combinaison, nous devons calculer la factorielle d'un nombre. Les factoriels peuvent être calculés de manière récursive. Ajoutez le code suivant en dehors de la fonction principale.

long factorial(int num) {
    if (num == 0) {
        return 1;
    }
    else {
        return num * factorial(num - 1);
    }
}

Cette fonction prend un entier en argument et renvoie sa factorielle.

Écrire la fonction pour calculer nCr

Ajoutez la fonction suivante en dehors de la fonction principale pour calculer nCr.

long nCr(int n, int r) {
    if (n < r) {
        return -1;
    }
    else {
        return factorial(n) / (factorial(r) * factorial(n - r));
    }
}

Cette fonction prend deux entiers, n et r, en arguments et renvoie la valeur de nCr. La valeur de nCr est calculée en divisant la factorielle de n par le produit de la factorielle de r et de la factorielle de n-r.

Écrire la fonction pour calculer nPr

Ajoutez la fonction suivante en dehors de la fonction principale pour calculer nPr.

long nPr(int n, int r) {
    if (n < r) {
        return -1;
    }
    else {
        return factorial(n) / factorial(n - r);
    }
}

Cette fonction prend deux entiers, n et r, en arguments et renvoie la valeur de nPr. La valeur de nPr est calculée en divisant la factorielle de n par la factorielle de n-r.

Écrire le code pilote du programme

Ajoutez le code suivant à l'intérieur de la fonction principale pour prendre des entrées et afficher les résultats.

int main()
{
    int n, r;

    printf("Entrez la valeur de n:");
    scanf("%d", &n);
    printf("Entrez la valeur de r:");
    scanf("%d", &r);

    printf("nCr est %ld\n", nCr(n, r));
    printf("nPr est %ld\n", nPr(n, r));

    return 0;
}

Ce code prend les valeurs d'entrée pour n et r de l'utilisateur et appelle les fonctions nCr() et nPr() pour calculer les valeurs respectives puis les affiche.

Code complet

Le code final ressemble à ce qui suit.

#include <stdio.h>

long factorial(int num) {
    if (num == 0) {
        return 1;
    }
    else {
        return num * factorial(num - 1);
    }
}

long nCr(int n, int r) {
    if (n < r) {
        return -1;
    }
    else {
        return factorial(n) / (factorial(r) * factorial(n - r));
    }
}

long nPr(int n, int r) {
    if (n < r) {
        return -1;
    }
    else {
        return factorial(n) / factorial(n - r);
    }
}

int main()
{
    int n, r;

    printf("Entrez la valeur de n:");
    scanf("%d", &n);
    printf("\nEntrez la valeur de r:");
    scanf("%d", &r);

    printf("nCr est %ld\n", nCr(n, r));
    printf("nPr est %ld\n", nPr(n, r));

    return 0;
}

Résumé

Dans ce laboratoire, nous avons appris à calculer les permutations et les combinaisons en langage C. Nous avons écrit les fonctions pour calculer la factorielle, nCr et nPr. Nous avons également écrit le code pilote du programme. En suivant les étapes ci-dessus, nous pouvons calculer les permutations et les combinaisons pour les entrées de l'utilisateur.