#include #include int roundit ( double x ) { int r; /* The rounded integer to return */ double fpart; /* Fractional part */ /* Store in r the truncated value of |x| */ r = (x >= 0) ? (int)x : (int)(-x); /* Compute the fractional part of |x| */ fpart = (x >= 0) ? x - (double)r : -(x + (double)r); /* Modify r based upon fpart */ if (fpart >= 0.5) ++r; /* Return r after sign adjustment */ return (x > 0) ? r : -r; } unsigned int bincoeff ( unsigned int n, unsigned int r ) { double prod; if (r > n) return 0; /* Initialize empty product */ prod = 1.0; while (r != 0) { prod *= (double)n / (double)r; --n; --r; } /* Return the rounded product */ return roundit(prod); } int main () { // double x; unsigned int n, r; // printf("x = "); scanf("%lf", &x); printf("round(x) = %d\n", roundit(x)); printf("n = "); scanf("%d", &n); printf("r = "); scanf("%d", &r); printf("C(n,r) = %d\n", bincoeff(n,r)); exit(0); }