#include #include #include #include using namespace std; char get_final_grade(vector& v) { sort(v.begin(), v.end()); char base = *v.rbegin(); if (base == 'A' || base == 'F') { return base; } int count = 0; for_each(v.begin(), v.end(), [&count, base](char c){ count += (c == base); }); if (count >= 3) return base; else return base - 1; } int main() { string filename; cout << "Mata in filnamn: "; cin >> filename; ifstream ifs(filename); if ( ! ifs ) { cerr << "FEL: " << filename << " kunde inte öppnas" << endl; return 1; } vector > final_grade; while ( ifs ) { vector partial_grades(5); for (char& c : partial_grades) ifs >> c; string name; if ( getline(ifs, name) ) { pair p; p.first = get_final_grade(partial_grades); p.second = name; final_grade.push_back(p); } } sort(final_grade.begin(), final_grade.end()); for (auto i : final_grade) { cout << i.first << " " << i.second << endl; } return 0; }