#include <stdio.h>
struct gradeStats {
int total_A;
int total_B;
int total_C;
int total_D;
int total_F;
int total_I;
};
struct gradeStats countGrades(char grades[], int size) {
struct gradeStats stats = {0};
for (int i = 0; i < size; i++) {
char grade = grades[i];
switch (grade) {
case 'A':
case 'a':
stats.total_A++;
break;
case 'B':
case 'b':
stats.total_B++;
break;
case 'C':
case 'c':
stats.total_C++;
break;
case 'D':
case 'd':
stats.total_D++;
break;
case 'F':
case 'f':
stats.total_F++;
break;
default:
stats.total_I++; // Invalid grade
}
}
return stats;
}
int main() {
char grades[] = {'A', 'b', 'C', 'x', 'D', 'c', 'F', 'B', 'Y', 'B', 'B', 'A'};
int size = sizeof(grades) / sizeof(grades[0]);
struct gradeStats stats = countGrades(grades, size);
printf("Total A: %d\n", stats.
total_A); printf("Total B: %d\n", stats.
total_B); printf("Total C: %d\n", stats.
total_C); printf("Total D: %d\n", stats.
total_D); printf("Total F: %d\n", stats.
total_F); printf("Total I: %d\n", stats.
total_I);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpzdHJ1Y3QgZ3JhZGVTdGF0cyB7CiAgICBpbnQgdG90YWxfQTsKICAgIGludCB0b3RhbF9COwogICAgaW50IHRvdGFsX0M7CiAgICBpbnQgdG90YWxfRDsKICAgIGludCB0b3RhbF9GOwogICAgaW50IHRvdGFsX0k7Cn07CgpzdHJ1Y3QgZ3JhZGVTdGF0cyBjb3VudEdyYWRlcyhjaGFyIGdyYWRlc1tdLCBpbnQgc2l6ZSkgewogICAgc3RydWN0IGdyYWRlU3RhdHMgc3RhdHMgPSB7MH07CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICBjaGFyIGdyYWRlID0gZ3JhZGVzW2ldOwogICAgICAgIHN3aXRjaCAoZ3JhZGUpIHsKICAgICAgICAgICAgY2FzZSAnQSc6CiAgICAgICAgICAgIGNhc2UgJ2EnOgogICAgICAgICAgICAgICAgc3RhdHMudG90YWxfQSsrOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ0InOgogICAgICAgICAgICBjYXNlICdiJzoKICAgICAgICAgICAgICAgIHN0YXRzLnRvdGFsX0IrKzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdDJzoKICAgICAgICAgICAgY2FzZSAnYyc6CiAgICAgICAgICAgICAgICBzdGF0cy50b3RhbF9DKys7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnRCc6CiAgICAgICAgICAgIGNhc2UgJ2QnOgogICAgICAgICAgICAgICAgc3RhdHMudG90YWxfRCsrOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ0YnOgogICAgICAgICAgICBjYXNlICdmJzoKICAgICAgICAgICAgICAgIHN0YXRzLnRvdGFsX0YrKzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgc3RhdHMudG90YWxfSSsrOyAvLyBJbnZhbGlkIGdyYWRlCiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBzdGF0czsKfQoKaW50IG1haW4oKSB7CiAgICBjaGFyIGdyYWRlc1tdID0geydBJywgJ2InLCAnQycsICd4JywgJ0QnLCAnYycsICdGJywgJ0InLCAnWScsICdCJywgJ0InLCAnQSd9OwogICAgaW50IHNpemUgPSBzaXplb2YoZ3JhZGVzKSAvIHNpemVvZihncmFkZXNbMF0pOwoKICAgIHN0cnVjdCBncmFkZVN0YXRzIHN0YXRzID0gY291bnRHcmFkZXMoZ3JhZGVzLCBzaXplKTsKCiAgICBwcmludGYoIlRvdGFsIEE6ICVkXG4iLCBzdGF0cy50b3RhbF9BKTsKICAgIHByaW50ZigiVG90YWwgQjogJWRcbiIsIHN0YXRzLnRvdGFsX0IpOwogICAgcHJpbnRmKCJUb3RhbCBDOiAlZFxuIiwgc3RhdHMudG90YWxfQyk7CiAgICBwcmludGYoIlRvdGFsIEQ6ICVkXG4iLCBzdGF0cy50b3RhbF9EKTsKICAgIHByaW50ZigiVG90YWwgRjogJWRcbiIsIHN0YXRzLnRvdGFsX0YpOwogICAgcHJpbnRmKCJUb3RhbCBJOiAlZFxuIiwgc3RhdHMudG90YWxfSSk7CgogICAgcmV0dXJuIDA7Cn0K