Calculation of permutation and combination using functions in C

This program is an example of using functions. It teaches you how to declare a function, define it and call. Here functions for calculating factorial and permutation/combination is used. Once you see the code you will be able to understand following
  • Function declaration, definition, calls.
  • Use of switch statement in a program.
  • How to write a structured program.
  • How to make menu in C
The complete source code and output are given below.

Source Code

 
//calculation of permutation and combination using function in C
 
#include
 
#include//for getch() function
 
//function declaration must be
 
//written before main function,
 
//function definition is optional
 
//you can write befor or after main
 
 
 
int factorial(int n){
 
int fact = 1;
 
int i;
 
for(i = n; i > 0; i--){
 
fact = fact*i;
 
}
 
return fact;
 
 
 
}
 
 
 
int permutation(int n,int r){
 
int per;
 
per = factorial(n)/(factorial(n-r));
 
return per;
 
}
 
 
 
int combination(int n,int r){
 
int comb; //local variable
 
comb = factorial(n)/(factorial(n-r)*factorial(r));
 
return comb; //return statement
 
}
 
 
 
int main(){
 
int choice;
 
int n,r;
 
while(1){
 
printf("\n1. Permutation\n2. Combination\n3. Factorial\n");
 
printf("Choose option: ");
 
scanf("%d",&choice);
 
switch(choice){ //start of switch statement
 
case 1:
 
printf("Enter value of n,r: ");
 
scanf("%d%d",&n,&r);
 
//calculation of combination with function call
 
printf("Permutation P(%d,%d) = %d",n,r,permutation(n,r));
 
break;
 
case 2:
 
printf("Enter value of n,r: ");
 
scanf("%d%d",&n,&r);
 
printf("Combination C(%d,%d) = %d",n,r,combination(n,r));
 
break;
 
case 3:
 
printf("Enter value of n: ");
 
scanf("%d",&n);
 
printf("The factorial %d! = %d",n,factorial(n));
 
break;
 
default: //if user enter other than 1 or 2
 
printf("Invalid choice! Enter either 1 or 2");
 
} //end of switch statement
 
printf("\nWant another calculation?(y/n):");
 
if(getche()=='n')
 
break;
 
}
 
return 0;
 
}//end of main
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Output