Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

In “scores.txt”, fictitious students and their test scores are entered (open it

ID: 3865889 • Letter: I

Question

In “scores.txt”, fictitious students and their test scores are entered (open it with a suitable editor). Each horizontal line is tab-separated, and the fields of sum, average, and grade are not input. Make “grade.c” that fills in the fields of sum, average, and grade, and outputs it as a new file “grades.txt”.

• A grade determined as: 90 or more -> A +, 80 or more -> A, 70 or more -> B, 60 or more -> C, otherwise -> F.

• Display the name and ID of the A+ student on the terminal as the execution result for confirming your program.

"scores.txt":

name ID test1 test2 test3 test4 sum average grade

student1 1W0001 53 99 59 91

student2 1W0002 78 89 95 54

student3 1W0003 76 98 70 79

student4 1W0004 90 92 56 83

student5 1W0005 70 50 92 96

student6 1W0006 99 94 86 64

student7 1W0007 84 77 71 57

student8 1W0008 73 88 81 65

student9 1W0009 52 51 86 73

student10 1W0010 86 73 68 100

student11 1W0011 87 56 87 61

student12 1W0012 60 96 51 87

student13 1W0013 83 90 82 69

student14 1W0014 96 78 63 93

student15 1W0015 57 86 92 54

student16 1W0016 70 62 86 90

student17 1W0017 94 68 82 73

student18 1W0018 57 82 66 58

student19 1W0019 87 74 75 76

student20 1W0020 71 99 96 60

student21 1W0021 52 78 50 61

student22 1W0022 51 97 59 73

student23 1W0023 66 90 74 99

student24 1W0024 58 93 55 69

student25 1W0025 89 95 72 83

student26 1W0026 89 70 50 84

student27 1W0027 94 93 79 61

student28 1W0028 62 74 65 72

student29 1W0029 66 66 86 51

student30 1W0030 59 91 69 54

student31 1W0031 64 59 86 73

student32 1W0032 69 72 73 93

student33 1W0033 62 51 56 51

student34 1W0034 58 52 96 54

student35 1W0035 100 88 98 72

student36 1W0036 93 93 72 72

student37 1W0037 98 95 100 76

student38 1W0038 72 65 58 60

student39 1W0039 95 98 55 53

student40 1W0040 69 87 92 79

student41 1W0041 88 93 100 62

student42 1W0042 66 55 81 91

student43 1W0043 55 89 50 86

student44 1W0044 65 76 95 54

student45 1W0045 80 74 85 86

student46 1W0046 86 92 88 100

student47 1W0047 60 69 87 78

student48 1W0048 69 55 65 83

student49 1W0049 79 85 61 66

student50 1W0050 99 88 80 98

student51 1W0051 58 81 50 77

student52 1W0052 100 59 94 92

student53 1W0053 66 77 66 85

student54 1W0054 97 56 73 84

student55 1W0055 54 79 66 54

student56 1W0056 89 56 60 93

student57 1W0057 96 71 53 95

student58 1W0058 93 98 75 94

student59 1W0059 98 57 70 69

student60 1W0060 99 65 92 94

student61 1W0061 71 89 57 90

student62 1W0062 77 99 69 84

student63 1W0063 82 89 76 63

student64 1W0064 78 55 78 82

student65 1W0065 66 84 74 76

student66 1W0066 82 55 67 63

student67 1W0067 77 94 54 57

student68 1W0068 69 56 86 66

student69 1W0069 97 90 100 50

student70 1W0070 52 78 56 86

student71 1W0071 70 87 93 89

student72 1W0072 61 50 83 68

student73 1W0073 96 53 73 67

student74 1W0074 67 74 97 80

student75 1W0075 56 60 64 68

student76 1W0076 89 100 93 61

student77 1W0077 100 76 79 92

student78 1W0078 86 56 50 59

student79 1W0079 62 59 52 83

student80 1W0080 72 57 87 95

student81 1W0081 75 67 75 68

student82 1W0082 64 82 71 82

student83 1W0083 58 83 64 83

student84 1W0084 61 80 92 64

student85 1W0085 78 51 58 62

student86 1W0086 84 99 82 64

student87 1W0087 88 62 84 65

student88 1W0088 71 82 61 69

student89 1W0089 89 59 73 52

student90 1W0090 64 89 100 91

student91 1W0091 68 84 76 93

student92 1W0092 88 63 88 60

student93 1W0093 78 82 95 92

student94 1W0094 82 58 50 51

student95 1W0095 58 63 55 78

student96 1W0096 78 65 95 55

student97 1W0097 82 75 61 53

student98 1W0098 62 58 93 67

student99 1W0099 81 64 78 99

student100 1W0100 53 52 76 58

Explanation / Answer

Code:

#include<stdio.h>

int main() {

    FILE *in = fopen("scores.txt", "r");

    FILE *out = fopen("grades.txt", "w");

    char student[20], id[20], misc[100], *grade;

    int m1, m2, m3, m4, sum;

    double avg;

    fscanf(in,"%[^ ] ", misc); // read and dump the first line containing headers

    fprintf(out,"%s ", misc);

    while (!feof(in)) {

       fscanf(in,"%[^ ] %[^ ] %d %d %d %d ", student, id, &m1, &m2, &m3, &m4);

       sum = m1 + m2 + m3 + m4;

       avg = sum/4.0;

       if (avg >= 90)

           grade = "A+";

       else if (avg >= 80)

           grade = "A";

       else if (avg >= 70)

           grade = "B";

       else if (avg >= 60)

           grade = "C";

       else

           grade = "F";

       fprintf(out,"%s %s %d %d %d %d %d %.2lf %s ", student, id, m1, m2, m3, m4, sum, avg, grade);

    }

    fclose(in);

    fclose(out);

}


Input file: scores.txt

Student    id    test1    test2    test3    test4    total    average    grade

Apple    iko002    60    25    100    100

Orange    iv3211    80    60    61    40

Berry    kjmmm    45    45    140    45


Output file: grades.txt

Student    id    test1    test2    test3    test4    total    average    grade

Apple    iko002    60    25    100    100    285    71.25    B

Orange    iv3211    80    60    61    40    241    60.25    C

Berry    kjmmm    45    45    140    45    275    68.75    C