/*----------------------------------------------------------------*/ /* Program chapter7_4 */ /* */ /* This program stores fingerprint information in a structure. */ /* It then references a function to compute the overall category.*/ #include /* Define a structure for the fingerprint information. */ /* The order for fingertips is right hand, thumb to pinky, */ /* and left hand, thumb to pinky. The codes are L for loops, */ /* W for whorls, and A for arches. */ struct fingerprint { int ID_number; double overall_category; char fingertip[10]; }; int main(void) { /* Declare and initialize variables. */ struct fingerprint new_print; double compute_category(struct fingerprint f); /* Specify information for the new fingerprint. */ new_print.ID_number = 2491009; new_print.overall_category = 0; new_print.fingertip[0] = 'W'; new_print.fingertip[1] = 'L'; new_print.fingertip[2] = 'L'; new_print.fingertip[3] = 'W'; new_print.fingertip[4] = 'A'; new_print.fingertip[5] = 'L'; new_print.fingertip[6] = 'L'; new_print.fingertip[7] = 'W'; new_print.fingertip[8] = 'A'; new_print.fingertip[9] = 'L'; /* Reference function to compute overall category. */ new_print.overall_category = compute_category(new_print); /* Print overall category computed by the function. */ printf("Fingerprint Analysis for ID: %i \n", new_print.ID_number); printf("Overall Category: %.2f \n",new_print.overall_category); /* Exit program. */ return 0; } /*--------------------------------------------------------------*/ /* This function computes the overall category */ /* for a fingerprint. */ double compute_category(struct fingerprint f) { /* Declare and initialize variables. */ double Rt=0, Ri=0, Rm=0, Rr=0, Rp=0, Lt=0, Li=0, Lm=0, Lr=0, Lp=0, num, den; /* Set values based on whorls. */ if (f.fingertip[0] == 'W') Rt = 16; if (f.fingertip[1] == 'W') Ri = 16; if (f.fingertip[2] == 'W') Rm = 8; if (f.fingertip[3] == 'W') Rr = 8; if (f.fingertip[4] == 'W') Rp = 4; if (f.fingertip[5] == 'W') Lt = 4; if (f.fingertip[6] == 'W') Li = 2; if (f.fingertip[7] == 'W') Lm = 2; /* Compute the numerator and denominator for overall category. */ num = Ri + Rr + Lt + Lm + Lp + 1; den = Rt + Rm + Rp + Li + Lr + 1; return num/den; } /*------------------------------------------------------------------*/