//Run it on codeblocks or Orwell/Bloodshed Dev C++ (Any termianl based program)
#include <stdio.h> // Standard library for C input/output
#include <stdlib.h> // Standard library definitions
#define TERMINAL -9 // This is a macro that is defined globally
// it is used to tell the program that the user is
// done with their input.
int main() // Main declaration with arguments
{
int userInput1,
userInput2,
nFact = 1,
kFact = 1,
n_k,
nkFact = 1,
combination;
do {
printf("\nEnter the number of items in the list (n): ");
scanf("%d", &userInput1);
if ( userInput1 < 1 || userInput1 > 10 ) /* is n between 1 - 10 */
printf("\n?Invalid input: Number must be between 1 and 10\n");
else
break;
} while ( userInput1 < 1 || userInput1 > 10 );
/* As long as n>=1 program will loop the following n*n-1 */
int n;
for ( n = userInput1; n > 1; n--) {
nFact = ( nFact * n );
}
printf("n! = %d", nFact);
do {
printf("\nEnter the number of items to choose (k): ");
scanf("%d", &userInput2);
if ( userInput2 < 1 || userInput2 > 10 ) /* is k between 1 - 10 */
printf("\n?Invalid input: Number must be between 1 and 10\n");
else
break;
} while ( userInput2 < 1 || userInput2 > 10 );
int k;
for ( k = userInput2; k > 1; k--) {
kFact = ( kFact * k );
}
printf("k! = %d", kFact);
printf("n = %d k = %d", userInput1, userInput2);
n_k = userInput1 - userInput2;
while (n_k>=1)
{
nkFact = ( nkFact * n_k );
n_k = ( n_k - 1 );
}
printf("\n(n-k)! = %d", nkFact);
combination = nFact / ( (nkFact) * kFact );
printf("\nNumber of combinations: %d", combination);
printf("\n");
system("PAUSE");
return(0);
}
Ly9SdW4gaXQgb24gY29kZWJsb2NrcyBvciBPcndlbGwvQmxvb2RzaGVkIERldiBDKysgKEFueSB0ZXJtaWFubCBiYXNlZCBwcm9ncmFtKQoKI2luY2x1ZGUgPHN0ZGlvLmg+ICAgICAgICAgLy8gU3RhbmRhcmQgbGlicmFyeSBmb3IgQyBpbnB1dC9vdXRwdXQgICAgICAgICAgICAgICAgCiNpbmNsdWRlIDxzdGRsaWIuaD4gICAgICAgIC8vIFN0YW5kYXJkIGxpYnJhcnkgZGVmaW5pdGlvbnMgICAgICAgICAgICAgICAgICAgICAgIAojZGVmaW5lIFRFUk1JTkFMIC05ICAgICAgICAvLyBUaGlzIGlzIGEgbWFjcm8gdGhhdCBpcyBkZWZpbmVkIGdsb2JhbGx5ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgaXMgdXNlZCB0byB0ZWxsIHRoZSBwcm9ncmFtIHRoYXQgdGhlIHVzZXIgaXMgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbmUgd2l0aCB0aGVpciBpbnB1dC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAppbnQgbWFpbigpICAgICAgICAgICAgICAgICAvLyBNYWluIGRlY2xhcmF0aW9uIHdpdGggYXJndW1lbnRzCnsKaW50IHVzZXJJbnB1dDEsCiAgICB1c2VySW5wdXQyLAogICAgbkZhY3QgPSAxLAogICAga0ZhY3QgPSAxLAogICAgbl9rLAogICAgbmtGYWN0ID0gMSwKICAgIGNvbWJpbmF0aW9uOwogCiAKICAgCmRvIHsKIHByaW50ZigiXG5FbnRlciB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBsaXN0IChuKTogIik7CiBzY2FuZigiJWQiLCAmdXNlcklucHV0MSk7CiAgICAgICBpZiAoIHVzZXJJbnB1dDEgPCAxIHx8IHVzZXJJbnB1dDEgPiAxMCApIC8qIGlzIG4gYmV0d2VlbiAxIC0gMTAgKi8KICAgICAgICAgIHByaW50ZigiXG4/SW52YWxpZCBpbnB1dDogTnVtYmVyIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAxMFxuIik7CiAgICAgICBlbHNlICAKICAgICAgICAgIGJyZWFrOwp9IHdoaWxlICggdXNlcklucHV0MSA8IDEgfHwgdXNlcklucHV0MSA+IDEwICk7CiAKIAogCiAgLyogQXMgbG9uZyBhcyBuPj0xIHByb2dyYW0gd2lsbCBsb29wIHRoZSBmb2xsb3dpbmcgbipuLTEgKi8KIAogaW50IG47IAogIGZvciAoIG4gPSB1c2VySW5wdXQxOyBuID4gMTsgbi0tKSB7CiAgICAgIG5GYWN0ID0gKCBuRmFjdCAqIG4gKTsKICB9ICAgIAogCiAgcHJpbnRmKCJuISA9ICVkIiwgbkZhY3QpOwogCiAKZG8gewogcHJpbnRmKCJcbkVudGVyIHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gY2hvb3NlIChrKTogIik7CiBzY2FuZigiJWQiLCAmdXNlcklucHV0Mik7ICAgIAogICAgICAgaWYgKCB1c2VySW5wdXQyIDwgMSB8fCB1c2VySW5wdXQyID4gMTAgKSAgLyogaXMgayBiZXR3ZWVuIDEgLSAxMCAqLwogICAgICAgICAgcHJpbnRmKCJcbj9JbnZhbGlkIGlucHV0OiBOdW1iZXIgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDEwXG4iKTsKICAgICAgIGVsc2UgIAogICAgICAgICAgYnJlYWs7Cn0gd2hpbGUgKCB1c2VySW5wdXQyIDwgMSB8fCB1c2VySW5wdXQyID4gMTAgKTsKaW50IGs7CiAgZm9yICggayA9IHVzZXJJbnB1dDI7IGsgPiAxOyBrLS0pIHsKICAgICAga0ZhY3QgPSAoIGtGYWN0ICogayApOwogIH0gICAgCiAKICBwcmludGYoImshID0gJWQiLCBrRmFjdCk7CnByaW50ZigibiA9ICVkIGsgPSAlZCIsIHVzZXJJbnB1dDEsIHVzZXJJbnB1dDIpOwpuX2sgPSB1c2VySW5wdXQxIC0gdXNlcklucHV0MjsKICB3aGlsZSAobl9rPj0xKQogIHsKICAgICAgICBua0ZhY3QgPSAoIG5rRmFjdCAqIG5fayApOwogICAgICAgIG5fayA9ICggbl9rIC0gMSApOwogIH0gICAgIApwcmludGYoIlxuKG4taykhID0gJWQiLCBua0ZhY3QpOwpjb21iaW5hdGlvbiA9IG5GYWN0IC8gKCAobmtGYWN0KSAqIGtGYWN0ICk7CnByaW50ZigiXG5OdW1iZXIgb2YgY29tYmluYXRpb25zOiAlZCIsIGNvbWJpbmF0aW9uKTsKcHJpbnRmKCJcbiIpOwpzeXN0ZW0oIlBBVVNFIik7CnJldHVybigwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCn0=