codescracker
c

C Program to Find nCr and nPr



« Previous Program Next Program »

In this tutorial, you will learn and get code about finding nCr (Combination) and nPr (Permutation) using a C program. But before going through the program, let's first understand about its formula.

nPr Formula

Let's suppose there are n number of players, in which we have to arrange r number of players. Therefore, to arrange r things out of n, use permutation formula:

nPr = n!/(n-r)!

Note - Permutation value shows the ways to arrange r things out of n

nCr Formula

Let's suppose there are n number of players, in which we have to select r number of players. Therefore, to select r things out of n, use combination formula:

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

Note - Combination value shows the ways to select r things out of n

Find nCr and nPr in C

To find nCr and nPr in C programming, you have to ask from user to enter the value of n and r to find the nCr and nPr value as shown in the program given below.

C Program to Find nPr

Let's first create a program to calculate permutation (nPr):

#include<stdio.h>
#include<conio.h>
int main()
{
    long long fact=1, numerator, denominator;
    int perm, n, r, i=1, sub;
    printf("Enter the value of n: ");
    scanf("%d", &n);
    printf("Enter the value of r: ");
    scanf("%d", &r);
    while(i<=n)
    {
        fact = i*fact;
        i++;
    }
    numerator=fact;                    // n!
    sub = n-r;
    fact=1;
    i=1;
    while(i<=sub)
    {
        fact=i*fact;
        i++;
    }
    denominator = fact;                // (n-r)!
    perm = numerator/denominator;
    printf("\nPermutation = %d", perm);
    getch();
    return 0;
}

This program was build and run under Code::Blocks IDE. Here is its sample run:

c program find ncr npr

Now supply the value of n say 15 and then the value of r say 3. To find the total number of ways to arrange 3 things out of 15 as shown below:

c find permutation

The statement:

while(i<=n)
{
    fact = i*fact;
    i++;
}

is used to find the factorial of n. Later, the similar statement is used to find the factorial of sub (that equals n-r). The factorial of n is initialized to numerator and factorial of sub or (n-r) is initialized to denominator variables respectively. Using the permutation formula as given above, just divide it and initialize the value to perm. Finally print perm's value as permutation value on output.

C Program to Find nCr

Here is another program to find combination (nCr):

#include<stdio.h>
#include<conio.h>
int main()
{
    long long fact=1, numerator, denominator;
    int comb, n, r, i=1, sub;
    printf("Enter the value of n: ");
    scanf("%d", &n);
    printf("Enter the value of r: ");
    scanf("%d", &r);
    while(i<=n)
    {
        fact = i*fact;
        i++;
    }
    numerator=fact;                    // n!
    sub = n-r;
    fact=1;
    i=1;
    while(i<=sub)
    {
        fact=i*fact;
        i++;
    }
    denominator = fact;               // (n-r)!
    fact = 1;
    i=1;
    while(i<=r)
    {
        fact = i*fact;
        i++;
    }
    denominator = (fact*denominator);
    comb = numerator/denominator;
    printf("\nCombination = %d", comb);
    getch();
    return 0;
}

Here is its sample run:

c program find ncr

In addition to the permutation program given above, here we have calculated the factorial of r also. Because, in previous program, denominator holds the factorial of (n-r) therefore we have initialized r!(n-r)! to denominator here. And finally using the combination formula, divides the numerator value with denominator, that is n!/r!(n-r)! and initialized it to comb variable. Print comb as combination value on output.

Find nCr and nPr using Function

This is the last program on permutation and combination. This program created using user-defined function to find the value of nCr and nPr

#include<stdio.h>
#include<conio.h>
long long findFact(int);
long long findPerm(int, int);
long long findComb(int, int);
int main()
{
    int comb, perm, n, r;
    printf("Enter the value of n: ");
    scanf("%d", &n);
    printf("Enter the value of r: ");
    scanf("%d", &r);
    perm = findPerm(n, r);
    comb = findComb(n, r);
    printf("\nPermutation = %d", perm);
    printf("\nCombination = %d", comb);
    getch();
    return 0;
}
long long findFact(int num)
{
    int i=1;
    long long fact=1;
    while(i<=num)
    {
        fact = i*fact;
        i++;
    }
    return fact;
}
long long findPerm(int n, int r)
{
    int sub;
    long long numt, dent;
    sub = n-r;
    numt = findFact(n);
    dent = findFact(sub);
    return numt/dent;
}
long long findComb(int n, int r)
{
    int sub;
    long long numt, dent, temp;
    sub = n-r;
    numt = findFact(n);
    temp = findFact(sub);
    dent = temp*findFact(r);
    return numt/dent;
}

Here is its sample run:

c program find permutation combination

Same Program in Other Languages

C Online Test


« Previous Program Next Program »



© Copyright 2021. All Rights Reserved.

CodesCracker