// Assignment 6 solution #include #include #include #include #include using namespace std; int main() { int studentId; int a1; // assignment 1 grade int a2; // assignment 2 grade int a3; // assignment 3 grade int a4; // assignment 4 grade int a5; // assignment 5 grade int a6; // assignment 6 grade int a7; // assignment 7 grade int a8; // assignment 8 grade int a9; // assignment 9 grade int a10; // assignment 10 grade int a11; // assignment 11 grade int minAss; int assTotal; int midterm; int final; int labexercises; int totalPoints; int pct; char grade, plusminus; int numA = 0, numB = 0, numC = 0, numD = 0, numF = 0; const string DataFile = "C:/temp/ass6data.txt"; const string ReportFile = "C:/temp/student.rpt"; const string SummaryFile = "C:/temp/student.sum"; const int MaxPoints = 400; ifstream fin(DataFile.c_str()); if (!fin) { cerr << "Unable to open input file: " << DataFile << endl; exit(-2); } ofstream fout(ReportFile.c_str()); if (!fout) { cerr << "Unable to open output file: " << ReportFile << endl; exit(-3); } // Write report file heading fout << "Student ----- Assignment Grades ----- Ass Mid Fin LEx Total Pct Gr" << endl; fout << "-------- -- -- -- -- -- -- -- -- -- -- -- --- --- --- --- ----- --- --" << endl; while (1) { fin >> studentId; if (fin.eof()) break; fin >> a1 >> a2 >> a3 >> a4 >> a5 >> a6 >> a7 >> a8 >> a9 >> a10 >> a11 >> midterm >> final >> labexercises; // Determine the minimum assignment grade minAss = a1; if (a2 < minAss) minAss = a2; if (a3 < minAss) minAss = a3; if (a4 < minAss) minAss = a4; if (a5 < minAss) minAss = a5; if (a6 < minAss) minAss = a6; if (a7 < minAss) minAss = a7; if (a8 < minAss) minAss = a8; if (a9 < minAss) minAss = a9; if (a10 < minAss) minAss = a10; // Assignment total assTotal = a1 + a2 + a3+ a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 - minAss; // Total Points totalPoints = assTotal + midterm + final + labexercises; // Calculate percent pct = static_cast(100.*totalPoints/MaxPoints+.5); // Determine letter grade switch (pct/10) { case 10: // "fall through" case 9: grade = 'A'; break; case 8: grade = 'B'; break; case 7: grade = 'C'; break; case 6: grade = 'D'; break; default: grade = 'F'; } // Determine plus or minus if (pct > 97) plusminus = '+'; else if (pct >= 60 && pct % 10 < 2) plusminus = '-'; else if (pct > 67 && pct%10 > 7) plusminus = '+'; else plusminus = ' '; // Write report fout << setfill('0'); fout << setw(8) << studentId; fout << setfill(' '); fout << setw(4) << a1 << setw(3) << a2 << setw(3) << a3 << setw(3) << a4 << setw(3) << a5 << setw(3) << a6 << setw(3) << a7 << setw(3) << a8 << setw(3) << a9 << setw(3) << a10 << setw(3) << a11 << setw(5) << assTotal << setw(5) << midterm << setw(5) << final << setw(4) << labexercises << setw(6) << totalPoints << setw(5) << pct << setw(2) << grade << plusminus <