{}
run-icon
main.c
#include <stdio.h> #include <stdlib.h> struct Student { int id; char name[50]; float m1, m2, m3, m4; float total, avg; char grade[3]; }; int main() { FILE *fp; struct Student s[100], temp; int count = 0, i, j; float sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0; fp = fopen("student.txt", "r"); if (fp == NULL) { printf("File not found!\n"); return 1; } while (fscanf(fp, "%d %s %f %f %f %f", &s[count].id, s[count].name, &s[count].m1, &s[count].m2, &s[count].m3, &s[count].m4) != EOF) { s[count].total = s[count].m1 + s[count].m2 + s[count].m3 + s[count].m4; s[count].avg = s[count].total / 4.0; if (s[count].avg >= 80) sprintf(s[count].grade, "A+"); else if (s[count].avg >= 70) sprintf(s[count].grade, "A"); else if (s[count].avg >= 60) sprintf(s[count].grade, "B"); else if (s[count].avg >= 50) sprintf(s[count].grade, "C"); else sprintf(s[count].grade, "F"); sum1 += s[count].m1; sum2 += s[count].m2; sum3 += s[count].m3; sum4 += s[count].m4; count++; } fclose(fp); printf("ID\tName\tTotal\tAverage\tGrade\n"); for(i=0;i<count;i++) { printf("%d\t%s\t%.2f\t%.2f\t%s\n", s[i].id, s[i].name, s[i].total, s[i].avg, s[i].grade); } for(i=0;i<count-1;i++) { for(j=i+1;j<count;j++) { if(s[j].total > s[i].total) { temp = s[i]; s[i] = s[j]; s[j] = temp; } } } printf("\nTop Three Students:\n"); for(i=0;i<3 && i<count;i++) { printf("%d %s %.2f\n", s[i].id, s[i].name, s[i].total); } float avg1 = sum1 / count; float avg2 = sum2 / count; float avg3 = sum3 / count; float avg4 = sum4 / count; printf("\nSubject Averages:\n"); printf("Subject1 = %.2f\n", avg1); printf("Subject2 = %.2f\n", avg2); printf("Subject3 = %.2f\n", avg3); printf("Subject4 = %.2f\n", avg4); float max = avg1; int subject = 1; if(avg2 > max) { max = avg2; subject = 2; } if(avg3 > max) { max = avg3; subject = 3; } if(avg4 > max) { max = avg4; subject = 4; } printf("\nSubject %d has the highest average (%.2f).\n", subject, max); return 0; }
Output