Calculer les Combinaisons (nCr) en C

CBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à calculer les combinaisons (nCr) à l'aide d'un programme C. Le laboratoire couvre deux étapes principales : la lecture des valeurs d'entrée pour n et r, puis la mise en œuvre de la formule pour calculer la combinaison nCr = n! / (r! * (n-r)!). À la fin de ce laboratoire, vous disposerez d'un programme C fonctionnel capable de calculer les combinaisons pour n'importe quelles valeurs de n et r.

Le laboratoire commence par démontrer comment lire les valeurs d'entrée pour n et r à l'aide de la fonction scanf(). Il présente ensuite la mise en œuvre des fonctions de calcul factoriel et de combinaison, utilisées pour calculer le résultat final. Le laboratoire fournit le code complet et des instructions étape par étape, ce qui vous permettra de suivre facilement et d'appliquer les concepts dans vos propres projets.

Lecture de n et r

Dans cette étape, vous apprendrez à lire les valeurs d'entrée pour n et r afin de calculer les combinaisons dans un programme C.

Tout d'abord, créez un nouveau fichier C pour votre programme de calcul de combinaisons :

cd ~/project
nano combinations.c

Maintenant, ajoutez le code suivant pour lire les valeurs d'entrée :

#include <stdio.h>

int main() {
    int n, r;

    // Demander à l'utilisateur d'entrer les valeurs de n et r
    printf("Entrez la valeur de n : ");
    scanf("%d", &n);

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

    // Afficher les valeurs saisies pour vérifier l'entrée
    printf("Vous avez entré n = %d et r = %d\n", n, r);

    return 0;
}

Compilez et exécutez le programme pour tester l'entrée :

gcc combinations.c -o combinations
./combinations

Sortie d'exemple :

Entrez la valeur de n : 5
Entrez la valeur de r : 3
Vous avez entré n = 5 et r = 3

Ce code démontre comment :

  • Utiliser scanf() pour lire les entrées entières de l'utilisateur
  • Demander à l'utilisateur d'entrer les valeurs de n et r
  • Afficher les valeurs saisies pour confirmer une entrée correcte

Le code établit les bases du calcul des combinaisons en capturant d'abord les valeurs d'entrée nécessaires n et r.

Calcul de nCr = n!/(r!(n-r)!)

Dans cette étape, vous implémenterez une fonction pour calculer le factoriel et calculer les combinaisons en utilisant la formule nCr = n! / (r! * (n-r)!).

Ouvrez le fichier combinations.c précédent et mettez-le à jour avec les fonctions de calcul factoriel et de combinaison :

cd ~/project
nano combinations.c

Ajoutez le code suivant pour implémenter les calculs factoriels et de combinaison :

#include <stdio.h>

// Fonction pour calculer le factoriel
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;
}

// Fonction pour calculer les combinaisons (nCr)
unsigned long long combinations(int n, int r) {
    // Validation de l'entrée
    if (r > n) {
        return 0;
    }

    // Utilisation de la formule des combinaisons : 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;

    // Demander à l'utilisateur d'entrer les valeurs de n et r
    printf("Entrez la valeur de n : ");
    scanf("%d", &n);

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

    // Calculer et afficher la combinaison
    unsigned long long result = combinations(n, r);

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

    return 0;
}

Compilez et exécutez le programme :

gcc combinations.c -o combinations
./combinations

Sortie d'exemple :

Entrez la valeur de n : 5
Entrez la valeur de r : 3
Combinaison C(5, 3) = 10

Points clés de cette implémentation :

  • La fonction factorial() calcule le factoriel d'un nombre donné.
  • La fonction combinations() implémente la formule des combinaisons.
  • Utilise unsigned long long pour gérer les calculs factoriels plus importants.
  • Valide l'entrée pour éviter les combinaisons invalides.

Affichage du Résultat

Dans cette étape, vous améliorerez le programme de calcul de combinaisons en ajoutant une sortie plus informative et une gestion des erreurs.

Ouvrez le fichier combinations.c et modifiez le code :

cd ~/project
nano combinations.c

Mettez à jour le code avec une impression de résultat améliorée et une validation des entrées :

#include <stdio.h>

// Les fonctions précédentes factorial et combinations restent les mêmes

int main() {
    int n, r;

    // Demander à l'utilisateur d'entrer les valeurs de n et r
    printf("Calculateur de combinaisons (nCr)\n");
    printf("--------------------------------\n");

    // Validation des entrées
    do {
        printf("Entrez le nombre total d'éléments (n) : ");
        scanf("%d", &n);

        if (n < 0) {
            printf("Erreur : n doit être un entier non négatif.\n");
        }
    } while (n < 0);

    do {
        printf("Entrez le nombre d'éléments à choisir (r) : ");
        scanf("%d", &r);

        if (r < 0 || r > n) {
            printf("Erreur : r doit être compris entre 0 et n.\n");
        }
    } while (r < 0 || r > n);

    // Calculer la combinaison
    unsigned long long result = combinations(n, r);

    // Sortie détaillée du résultat
    printf("\nDétail du résultat :\n");
    printf("--------------------\n");
    printf("Nombre total d'éléments (n) : %d\n", n);
    printf("Éléments à choisir (r) : %d\n", r);
    printf("Combinaisons possibles (nCr) : %llu\n", result);

    // Explication du résultat
    printf("\nInterprétation :\n");
    printf("----------------\n");
    printf("Il existe %llu façons de choisir %d éléments dans un ensemble de %d éléments.\n",
           result, r, n);

    return 0;
}

Compilez et exécutez le programme :

gcc combinations.c -o combinations
./combinations

Sortie d'exemple :

Calculateur de combinaisons (nCr)
--------------------------------
Entrez le nombre total d'éléments (n) : 5
Entrez le nombre d'éléments à choisir (r) : 3

Détail du résultat :
--------------------
Nombre total d'éléments (n) : 5
Éléments à choisir (r) : 3
Combinaisons possibles (nCr) : 10

Interprétation :
----------------
Il existe 10 façons de choisir 3 éléments dans un ensemble de 5 éléments.

Améliorations clés :

  • Ajout d'une validation des entrées pour éviter les entrées invalides.
  • Amélioration de la sortie avec un décompte détaillé du résultat.
  • Fourniture d'une interprétation du résultat de la combinaison.

Résumé

Dans ce laboratoire, vous avez appris à lire les valeurs d'entrée pour n et r, puis à calculer les combinaisons (nCr) en utilisant la formule nCr = n! / (r! * (n-r)!). Vous avez implémenté des fonctions pour calculer le factoriel et les combinaisons, puis utilisé ces fonctions pour calculer le résultat final. Les étapes clés étaient : 1) la lecture des valeurs d'entrée pour n et r, et 2) le calcul des combinaisons en utilisant la formule et la fonction factorielle.