codescracker
c++

C++ Program to Find nPr and nCr



« Previous Program Next Program »

In this article, you will learn and get code to find and print nPr (Permutation) and nCr (Combination) in C++ language. Here are the list of programs available in this article:

Before going through these programs, let's understand about the formula used to calculate permutation (nPr) and combination (nCr).

nPr Formula

The formula to find the value of nPr is:

nPr = n!/(n-r)!

Note - The symbol (!) indicates factorial.

Note - Permutation (nPr) value shows the number of ways to arrange r things out of n

nCr Formula

The formula to find the value of nCr is:

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

Note - Combination (nCr) value shows the number of ways to select r things out of n

C++ Find nPr (Permutation)

To find nPr in C++ programming, you have to ask from user to enter the value of n and r. In both the program of calculating nPr and nCr, the only required code is to find factorial of a number. Rest of the things are just a normal things like initializing, dividing, printing etc.

The question is, write a program in C++ to find the value of nPr. Here is its answer:

// C++ Program to Find nPr (Permutation)
// ----codescracker.com----

#include<iostream>
using namespace std;
int main()
{
    long long fact=1, numerator, denominator;
    int perm, n, r, i=1, sub;
    cout<<"Enter the Value of n: ";
    cin>>n;
    cout<<"Enter the Value of r: ";
    cin>>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;
    cout<<"\nPermutation (nPr) = "<<perm;
    cout<<endl;
    return 0;
}

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

find npr c++

Now type a number say 5 as value of n, and then type another number say 3 as value of r. Now press ENTER key to find and print the value of nPr as shown in the output given below:

c++ program find npr permutation

Note - There are 60 ways to arrange 3 things out of 5.

The following block of code:

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

is used to find factorial of n. So the statement:

numerator=fact;

is used to initialized the factorial of n to numerator. That is, numerator = n!

In above program, the factorial of n and n-r gets calculated and then using the formula of nPr, its value gets calculated and printed on output. You can refer to, factorial program for its in-depth detail.

C++ Find nCr (Combination)

This program asks from user to enter the value of n and r. Based on the values, program finds and prints the value of nCr that tells the number of ways to select r things out of n:

// C++ Program to Find nCr (Combination)
// ----codescracker.com----

#include<iostream>
using namespace std;
int main()
{
    long long fact=1, numerator, denominator;
    int comb, n, r, i=1, sub;
    cout<<"Enter the Value of n: ";
    cin>>n;
    cout<<"Enter the Value of r: ";
    cin>>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;
    cout<<"\nCombination (nCr) = "<<comb;
    cout<<endl;
    return 0;
}

Here is its sample run with user input, 5 as value of n and 3 as value of r:

c++ program find ncr combination

Note - There are 10 ways to select 3 things out of 5.

C++ Find nPr and nCr in Single Program

This program receives the value of n and r. Then calculates and prints permutation and combination value both.

// C++ Program to Find nPr and nCr
// ----codescracker.com----

#include<iostream>
using namespace std;
int main()
{
    long long fact=1, numerator, denominator;
    int npr, ncr, n, r, i=1, sub;
    cout<<"Enter the Value of n: ";
    cin>>n;
    cout<<"Enter the Value of r: ";
    cin>>r;
    while(i<=n)
    {
        fact = i*fact;
        i++;
    }
    numerator=fact;                   // fact = n!
    sub = n-r;
    fact=1, i=1;
    while(i<=sub)
    {
        fact = i*fact;
        i++;
    }
    denominator = fact;               // fact = (n-r)!
    npr = numerator/denominator;
    i=1, fact=1;
    while(i<=r)
    {
        fact = i*fact;
        i++;
    }
    ncr = npr/fact;                   // fact = r!
    cout<<"\nPermutation (nPr) = "<<npr;
    cout<<"\nCombination (nCr) = "<<ncr;
    cout<<endl;
    return 0;
}

Here is its sample run with same user input as provided in above program's sample run:

C++ program find ncr npr

Find nPr and nCr using for Loop

This program uses for loop (instead of while) to do the same job as of previous program.

// Find nPr and nCr using for Loop
// ----codescracker.com----

#include<iostream>
using namespace std;
int main()
{
    long long fact, numerator, denominator;
    int npr, ncr, n, r, i, sub;
    cout<<"Enter the Value of n: ";
    cin>>n;
    cout<<"Enter the Value of r: ";
    cin>>r;
    for(i=1, fact=1; i<=n; i++)
        fact = i*fact;
    numerator=fact;                   // fact = n!
    sub = n-r;
    for(i=1, fact=1; i<=sub; i++)
        fact = i*fact;
    denominator = fact;               // fact = (n-r)!
    npr = numerator/denominator;
    for(i=1, fact=1; i<=r; i++)
        fact = i*fact;
    ncr = npr/fact;                   // fact = r!
    cout<<"\nPermutation (nPr) = "<<npr;
    cout<<"\nCombination (nCr) = "<<ncr;
    cout<<endl;
    return 0;
}

This program produces the same output as of previous program.

Find nPr and nCr using Function

This is the last program of this article, uses some user-defined functions to do the same task as of previous program.

// Find nPr and nCr using Function
// ----codescracker.com----

#include<iostream>
using namespace std;
long long findFact(int);
int findNPR(int, int);
int findNCR(int, int);
int main()
{
    int npr, ncr, n, r;
    cout<<"Enter the Value of n: ";
    cin>>n;
    cout<<"Enter the Value of r: ";
    cin>>r;
    npr = findNPR(n, r);
    ncr = findNCR(n, r);
    cout<<"\nPermutation (nPr) = "<<npr;
    cout<<"\nCombination (nCr) = "<<ncr;
    cout<<endl;
    return 0;
}
long long findFact(int num)
{
    int i=1, fact=1;
    while(i<=num)
    {
        fact = i*fact;
        i++;
    }
    return fact;
}
int findNPR(int n, int r)
{
    long long numerator, denominator;
    numerator = findFact(n);
    denominator = findFact(n-r);
    return (numerator/denominator);
}
int findNCR(int n, int r)
{
    int npr, ncr;
    npr = findNPR(n, r);
    ncr = npr/findFact(r);
    return ncr;
}

Same Program in Other Languages

C++ Online Test


« Previous Program Next Program »



© Copyright 2021. All Rights Reserved.

CodesCracker