#include "student_info.h" bool compare_students(const StudentInfo& a, const StudentInfo& b) { return a.name < b.name; } std::istream& read_homework(std::istream& in, std::vector& hw) { if (in) { hw.clear(); // Empty the vector. double x; /* * Loop invariant: * - 'homework' contains all the homework grades read so far */ while (in >> x) hw.push_back(x); in.clear(); // Clear the stream in case // it will be used again. } return in; } std::istream& read_student(std::istream& is, StudentInfo& s) { /* Read and store student's name, midterm and final */ is >> s.name >> s.midterm >> s.final; read_homework(is, s.homework); return is; }