Code:
#include <stdio.h>
#include "Boolean.h"
#include "combinatorics.h"
#include <limits.h>

/* For all the functions below, return TRUE if the
   calculation is successful, FALSE if overflow occurs
   Return the calculated value in the pass by reference
   parameter provided
*/

Boolean calcFactorial (int n, int* nfact)
{
    *nfact = 1;

	while(n > 0)
	{
	       *nfact = *nfact * n;
		   n--;		   
	}
	if(*nfact < 0x7fffffff)
		   {
		      return TRUE;	 
		   }
	       else
		   {
		      return FALSE;
		   }      
}

/*
Combination means C(n,r) = n!/( r! * (n-r)! ) 
where C(n,r) is the number of r-element subsets of an n-element set.
Better formula derived from above is:
          n ( n-1 ) ( n-2 ) ... ( n-r+1 ) 
 C(n,r) = ------------------------------- 
          r ( r-1 ) ( r-2 ) ... (3)(2)(1) 


  Return True if calculation is successful. False if
  Overflow occurs.
*/

Boolean calcCNR( int n, int r, int* cnr )
{
    #define min(n,r)  (((n) < (r)) ? (n) : (r));

    int multiplier = n;
    int divisor = 1;
    int k;
    INT_MAX;

    k = min(r, n - r);
    //printf("n=%d, r=%d, k=%d\n", n, r, k);
    
    
	*cnr = 1;
    while (divisor <= k) 
	{
		if(INT_MAX / multiplier < *cnr) 
		{ 
			printf("Overflow detected\n");
		    return FALSE;
		}
		else
		{
        *cnr = ((*cnr * multiplier) / divisor);
   		
        //printf("Intermediate *cnr=%d\n", *cnr);
        multiplier--;
        divisor++;
		}
    }
	return TRUE;

}
Boolean calcPNR( int cnr, int rfact, int* pnr )
{

}
here is my program so far for calculating factorials, combinations, and permutations. Can someone show me an algorithm or pseudocode to calculate the calcPNR(permuation) function please?