#include #include int has_nonzero_masked(long x, long mask) { return !!(x & mask); } int has_nonzero_omasked(long x, long mask) { return !!(x | mask); } int gt(long x, long y) { return x > y; } long lgt(long x, long y) { return x > y; } long max(long x, long y) { return (x > y) ? x : y; } void smax(long x, long *vp) { long v = *vp; if (v < x) *vp = x; } int xgty_balance = 0; int incdecmax(int x, int y) { if (x > y) { xgty_balance++; return x; } else { xgty_balance--; return y; } } int winx = 0; long maxw(long x, long y) { if (x > y) { winx++; return x; } else return y; } long fib_dw(int n) { long fprev = 1L; long fcurr = 1L; do { long fnext = fprev+fcurr; fprev = fcurr; fcurr = fnext; n--; } while (n > 2); return fcurr; } long fib_while(int n) { long fprev = 1L; long fcurr = 1L; while (n > 2) { long fnext = fprev+fcurr; fprev = fcurr; fcurr = fnext; n--; } return fcurr; } int fact_while(int x) { int result = 1; while (x > 1) { result *= x; x = x-1; } return result; } long fib_while2(int n) { long fprev = 1L; long fcurr = 1L; int i = 2; while (i < n) { long fnext = fprev+fcurr; fprev = fcurr; fcurr = fnext; i++; } return fcurr; } long fib_for(long n) { long fprev = 1L; long fcurr = 1L; int i; for (i = 2; i < n; i++) { long fnext = fprev + fcurr; fprev = fcurr; fcurr = fnext; } return fcurr; } long switch_eg(long x, long y, long z) { long w = 1; switch(x) { case 1: w = y*z; break; case 2: w = y/z; /* Fall Through */ case 3: w += z; break; case 5: case 6: w -= z; break; default: w = 2; } return w; } long sparse_switch(long x, long y, long z) { long w = 1; switch(x) { case 100: w = y*z; break; case 200: w = y/z; /* Fall Through */ case 300: w += z; break; case 500: case 600: w -= z; break; default: w = 2; } return w; } long puzzle_loop(long x, long y, long z) { long t1 = x+y; long t2 = x*y; long i; for (i = 456; i > z; i += t1) { long temp = t1; t1 = t2; t2 = temp; } return t1; } #if 0 long puzzle_loop(long x, long y, long z) { long t1 = ____; long t2 = ____; long i; for (i = ____; i > ____; i += _____) { long temp = t1; t1 = t2; t2 = temp; } return t1; } #endif int main(int argc, char *argv[]) { long x, y, z, w; if (argc != 4) { printf("Usage: %s x y z\n", argv[0]); exit(0); } x = strtol(argv[1], NULL, 0); y = strtol(argv[2], NULL, 0); z = strtol(argv[3], NULL, 0); w = switch_eg(x, y, z); printf("switch_eg(%ld, %ld, %ld) --> %ld\n", x, y, z, w); return 0; }