#include // IO Manipulators #include #include #include #include #include #include #include "grade.h" #include "student_info.h" using std::cin; using std::string; using std::cout; using std::endl; int main(void) { std::vector students; StudentInfo record; string::size_type maxlen = 0; while (read_student(cin, record)) { maxlen = std::max(maxlen, record.name.size()); students.push_back(record); } sort(students.begin(), students.end(), compare_students); for (std::vector::size_type i = 0; i != students.size(); i++) { cout << students[i].name << string(maxlen + 1 - students[i].name.size(), ' '); try { double final_grade = grade(students[i]); std::streamsize prec = cout.precision(); cout << std::setprecision(3) << final_grade << std::setprecision(prec); } catch (std::domain_error& e){ cout << e.what(); } cout << endl; } return 0; }