/* Program for computing letter grades in CPSC 441 */ /* Usage: cc -o compute compute.c */ /* ./compute < marks.txt */ /* Written by Carey Williamson January 5, 2014 */ #include #define STRLEN 20 main() { char fname[STRLEN], lname[STRLEN]; int id; float a1, a2, a3, a4; float quiz; float mid; float fin; float tot; char grade; char flag; while( scanf("%s %s %d %f %f %f %f %f %f %f\n", fname, lname, &id, &a1, &a2, &a3, &a4, &quiz, &mid, &fin) == 10 ) { tot = a1 + a2 + a3 + a4; tot /= 4; tot += 0.08*100.0*quiz/32.0; tot += 0.20 * mid; tot += 0.40 * fin; grade = 'F'; flag = ' '; if( tot >= 50 ) { grade = 'D'; flag = ' '; } if( tot >= 55 ) { grade = 'C'; flag = '-'; } if( tot >= 60 ) { grade = 'C'; flag = ' '; } if( tot >= 65 ) { grade = 'C'; flag = '+'; } if( tot >= 70 ) { grade = 'B'; flag = '-'; } if( tot >= 75 ) { grade = 'B'; flag = ' '; } if( tot >= 80 ) { grade = 'B'; flag = '+'; } if( tot >= 85 ) { grade = 'A'; flag = '-'; } if( tot >= 90 ) { grade = 'A'; flag = ' '; } if( tot >= 95 ) { grade = 'A'; flag = '+'; } if( fin < 0 ) { grade = 'W'; flag = ' '; } printf("%20s %-15s %4.1f %4.1f %4.1f %4.1f %4.1f %5.1f %5.1f %5.1f %c%c\n", fname, lname, a1, a2, a3, a4, quiz, mid, fin, tot, grade, flag); } }