// This program reads in student names plus 5 exam scores from a file. // It loads this data into an array of structures, computes final grades, // and then prints out the information. #include #include #include #define N_SCORES 5 struct student { char last_name[50]; int score[5]; char final_grade; }; char assign_grade(double mean_score); bool read_student_data(ifstream &score_file, student &s); double compute_mean(int students_scores[]); int main() { student cs1300[200]; // array of students in cs1300 student perfect = {"PERFECT",{100,100,100,100,100},'A'}; // "perfect" is a student with perfect scores int cur, i, j; ifstream score_file; // read student name and scores from file score_file.open("scores"); for (cur=0; read_student_data(score_file,cs1300[cur]); ++cur) // determine letter grade cs1300[cur].final_grade = assign_grade(compute_mean(cs1300[cur].score)); // create a final student with a perfect score // (note: "i" indexes the cs1300 array past the last student) cs1300[cur] = perfect; // print out students and scores and final grade for (i=0;i<=cur; ++i) { cout << "student " << i << setw(20) << cs1300[i].last_name << " scores: "; for (j=0;j> s.last_name; if (score_file.eof()) return false; for (i=0;i> s.score[i]; return true; } ///////////////////////////// compute_mean ///////////////////////////////////// double compute_mean(int students_scores[]) { int i, total=0; for (i=0;i 90) return 'A'; else if (mean_score > 80) return 'B'; else if (mean_score > 70) return 'C'; else if (mean_score > 60) return 'D'; else return 'F'; }