#include <iostream>
#include <fstream>
#include <string>
#include <vector>
struct Student_info {
friend std::ostream &operator<<( std::ostream &output,
const Student_info &S ) { // overloads operator to print name and grades
output << S.name << ": ";
for (auto it = S.homework.begin(); it != S.homework.end(); ++it)
std::cout << *it << ' ';
return output;
}
friend std::istream &operator>>( std::istream &input, Student_info &S ) { // overloads operator to read into Student_info object
input >> S.name >> S.midterm >> S.final;
double x;
if (input) {
S.homework.clear();
while (input >> x) {
S.homework.push_back(x);
}
input.clear();
}
return input;
}
std::string name; // student name
double midterm, final; // student exam scores
std::vector<double> homework; // student homework total score (mean or median)
};
int main() {
//std::ifstream myfile ("/Users/.../Documents/C++/example_short.txt");
Student_info student; // temp object for receiving data from istream
std::vector<Student_info> student_list; // list of students and their test grades
while (std::cin >> student) { // or myfile >> student
student_list.push_back(student);
student.homework.clear();
}
for (auto it = student_list.begin(); it != student_list.end(); ++it) {
std::cout << *it << '\n';
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KCnN0cnVjdCBTdHVkZW50X2luZm8gewogICBmcmllbmQgc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KCBzdGQ6Om9zdHJlYW0gJm91dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3R1ZGVudF9pbmZvICZTICkgeyAvLyBvdmVybG9hZHMgb3BlcmF0b3IgdG8gcHJpbnQgbmFtZSBhbmQgZ3JhZGVzCiAgICAgIG91dHB1dCA8PCBTLm5hbWUgPDwgIjogIjsKICAgICAgZm9yIChhdXRvIGl0ID0gUy5ob21ld29yay5iZWdpbigpOyBpdCAhPSBTLmhvbWV3b3JrLmVuZCgpOyArK2l0KQogICAgICAgICBzdGQ6OmNvdXQgPDwgKml0IDw8ICcgJzsKICAgICAgcmV0dXJuIG91dHB1dDsKICAgfQoKICAgZnJpZW5kIHN0ZDo6aXN0cmVhbSAmb3BlcmF0b3I+Piggc3RkOjppc3RyZWFtICZpbnB1dCwgU3R1ZGVudF9pbmZvICZTICkgeyAvLyBvdmVybG9hZHMgb3BlcmF0b3IgdG8gcmVhZCBpbnRvIFN0dWRlbnRfaW5mbyBvYmplY3QKICAgICAgaW5wdXQgPj4gUy5uYW1lID4+IFMubWlkdGVybSA+PiBTLmZpbmFsOwogICAgICBkb3VibGUgeDsKICAgICAgaWYgKGlucHV0KSB7CiAgICAgICAgIFMuaG9tZXdvcmsuY2xlYXIoKTsKICAgICAgICAgd2hpbGUgKGlucHV0ID4+IHgpIHsKICAgICAgICAgICAgUy5ob21ld29yay5wdXNoX2JhY2soeCk7CiAgICAgICAgIH0KICAgICAgICAgaW5wdXQuY2xlYXIoKTsKICAgICAgfQogICAgICByZXR1cm4gaW5wdXQ7CiAgIH0KCiAgIHN0ZDo6c3RyaW5nIG5hbWU7IC8vIHN0dWRlbnQgbmFtZQogICBkb3VibGUgbWlkdGVybSwgZmluYWw7IC8vIHN0dWRlbnQgZXhhbSBzY29yZXMKICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBob21ld29yazsgLy8gc3R1ZGVudCBob21ld29yayB0b3RhbCBzY29yZSAobWVhbiBvciBtZWRpYW4pCgp9OwoKCmludCBtYWluKCkgewogICAvL3N0ZDo6aWZzdHJlYW0gbXlmaWxlICgiL1VzZXJzLy4uLi9Eb2N1bWVudHMvQysrL2V4YW1wbGVfc2hvcnQudHh0Iik7CiAgIFN0dWRlbnRfaW5mbyBzdHVkZW50OyAvLyB0ZW1wIG9iamVjdCBmb3IgcmVjZWl2aW5nIGRhdGEgZnJvbSBpc3RyZWFtCiAgIHN0ZDo6dmVjdG9yPFN0dWRlbnRfaW5mbz4gc3R1ZGVudF9saXN0OyAvLyBsaXN0IG9mIHN0dWRlbnRzIGFuZCB0aGVpciB0ZXN0IGdyYWRlcwogICB3aGlsZSAoc3RkOjpjaW4gPj4gc3R1ZGVudCkgeyAvLyBvciBteWZpbGUgPj4gc3R1ZGVudAogICAgICBzdHVkZW50X2xpc3QucHVzaF9iYWNrKHN0dWRlbnQpOwogICAgICBzdHVkZW50LmhvbWV3b3JrLmNsZWFyKCk7CiAgIH0KICAgZm9yIChhdXRvIGl0ID0gc3R1ZGVudF9saXN0LmJlZ2luKCk7IGl0ICE9IHN0dWRlbnRfbGlzdC5lbmQoKTsgKytpdCkgewogICAgICBzdGQ6OmNvdXQgPDwgKml0IDw8ICdcbic7CiAgIH0KICAgcmV0dXJuIDA7Cn0K