Code:
#include "grades.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
int
main ( void )
{
FILE *fin, *fout;
STUDENT stuArr[MAX_STUDENTS];
int i = 0, FinalGrade;
/* Open file to read input data */
if ( ( fin = fopen ( "grades.in", "r" ) ) == NULL ) {
fprintf ( stderr, "Could not open file grades.in\n" );
fclose (fin);
exit ( -1 );
}
else {
while (i < MAX_STUDENTS) {
fscanf(fin,"%s%s\n%d\n%d%d%d%d%d\n%d%d%d\n",stuArr[i].fName,stuArr[i].lName,&stuArr[i].id,stuArr[i].hw[0],&stuArr[i].hw[1], &stuArr[i].hw[2],&stuArr[i].hw[3], &stuArr[i].hw[4],&stuArr[i].exm[0],&stuArr[i].exm[1],&stuArr[i].exm[2]);
fclose (fin);
}
}
/* Open file for writing output */
if ( ( fout = fopen ( "grades.out", "w" ) ) == NULL ) {
fprintf ( stderr, "Could not open file grades.out\n" );
fclose ( fout);
exit ( -1 );
}
else {
fprintf(fout, "%s\n", "==============================================");
fprintf(fout, "%s\n", " PRINTING ALL RECORDS ");
fprintf(fout, "%s\n", "==============================================");
fprintf(fout, "%-10s%-10s%-8s%-8s%-8s%s\n","Student","Name","Id","HAvg","EAvg","Grade");
while (!feof(fin)) {
if (strcmp(stuArr[0].fName,stuArr[1].fName)!= 0) {
fprintf( fout,"%-10s%-10s%-8d%-8.2f%-8.2f",stuArr[i].fName,stuArr[i].lName,&stuArr[i].id,stuArr[i].hwAvg,&stuArr[i].exmAvg);
stuArr[i].hwAvg = (stuArr[i].hw[0] + stuArr[i].hw[1] + stuArr[i].hw[2] + stuArr[i].hw[3] + stuArr[i].hw [4]) / 5;
stuArr[i].exmAvg = (stuArr[i].exm[0] + stuArr[i].exm[1] + stuArr[i].exm[2]) / 3;
FinalGrade = (stuArr[i].hwAvg * 0.4) + (stuArr[i].exmAvg * 0.6);
if (FinalGrade >= 85 && FinalGrade <= 100.00) stuArr[i].grade = 'A';
else if (FinalGrade >= 75 && FinalGrade <= 84) stuArr[i].grade = 'B';
else if (FinalGrade >= 60 && FinalGrade <= 74) stuArr[i].grade = 'C';
else if (FinalGrade >= 50 && FinalGrade <= 59) stuArr[i].grade = 'D';
else if (FinalGrade < 50) stuArr[i].grade == 'F';
fprintf( fout,"%c\n", stuArr[i].grade);
}
else {
fprintf ( stderr, "Could not add entry of %s%s_ErrorInAcct with id: %d - id already exists\n", stuArr[i].fName, stuArr[i].lName, stuArr[i].id);
fprintf ( stderr, "Incorrect number of entries for the name field of %s_ErrorInAcct", stuArr[i].fName);
fprintf ( stderr, "Incorrect number of entries for id field of %s_ErrorInAcct", stuArr[i].fName);
fprintf ( stderr, "Incorrect number of entries for homework field of %s_ErrorInAcct", stuArr[i].fName);
fprintf ( stderr, "Incorrect number of entries for exam field of %s_ErrorInAcct", stuArr[i].fName);
}
}
fclose (fout);
}
return 0;
}
grades.h