/* solution to practice problem "gears" by Bob Roos */ #include double dabs(double x) { if (x < 0.0) return -x; return x; } int main() { int i, j, n, fi, ri; double PI = 3.14159; int f[3], r[9], diam, target; int closestf, closestr; double bestsofar = -1; double size; scanf("%d",&n); for (i = 0; i < n; i++) { scanf("%d %d %d",&f[0],&f[1],&f[2]); for (j = 0; j < 9; j++) scanf("%d",&r[j]); scanf("%d %d",&diam,&target); for (fi = 0; fi < 3; fi++) { for (ri = 0; ri < 9; ri++) { size = PI*diam*f[fi]/(double)r[ri]; if (dabs(size - target) < dabs(bestsofar - target)) { bestsofar = size; closestf = fi; closestr = ri; } } } if (i) { printf("\n"); } printf("A gear selection of %d/%d produces a gear size of %0.3lf.\n", f[closestf],r[closestr],bestsofar); } }