fork download
  1. #include <iostream>
  2. #include <list>
  3. #include <string>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. struct Student {
  9. string surname;
  10. int course;
  11. int mathan;
  12. int algebra;
  13. };
  14.  
  15. bool compareBySurname(const Student& a, const Student& b) {
  16. return a.surname < b.surname;
  17. }
  18.  
  19. bool compareByCourse(const Student& a, const Student& b) {
  20. return a.course < b.course;
  21. }
  22.  
  23. bool hasLowGrades(const Student& s) {
  24. return s.mathan < 60 || s.algebra < 60;
  25. }
  26.  
  27.  
  28. void printList(const list<Student>& lst) {
  29. list<Student>::const_iterator it;
  30. for (it = lst.begin(); it != lst.end(); ++it) {
  31. cout << it->surname << " курс " << it->course
  32. << " mathan - " << it->mathan
  33. << " algebra - " << it->algebra << endl;
  34. }
  35. cout << endl;
  36. }
  37.  
  38. int main() {
  39. list<Student> students = {
  40. {"Іваненко", 1, 75, 82},
  41. {"Петренко", 2, 91, 88},
  42. {"Сидоренко", 1, 58, 64},
  43. {"Бондар", 2, 67, 59},
  44. {"Коваль", 1, 45, 51},
  45. {"Ткаченко", 2, 88, 79},
  46. {"Литвин", 1, 62, 65}
  47. };
  48.  
  49. cout << "📋 Початковий список студентів:\n";
  50. printList(students);
  51.  
  52. students.sort(compareBySurname);
  53. cout << "🔤 Відсортовано за прізвищем (compareBySurname):\n";
  54. printList(students);
  55.  
  56.  
  57. students.sort(compareByCourse);
  58. cout << "🎓 Відсортовано за курсом (compareByCourse):\n";
  59. printList(students);
  60.  
  61. cout << "Після переведення на наступний курс (mathan > 60 && algebra > 60):\n";
  62. printList(students);
  63.  
  64.  
  65. students.remove_if(hasLowGrades);
  66. cout << "❌ Після видалення студентів з оцінками < 60:\n";
  67. printList(students);
  68.  
  69. return 0;
  70. }
Success #stdin #stdout 0.01s 5324KB
stdin
Standard input is empty
stdout
📋 Початковий список студентів:
Іваненко  курс 1  mathan - 75  algebra - 82
Петренко  курс 2  mathan - 91  algebra - 88
Сидоренко  курс 1  mathan - 58  algebra - 64
Бондар  курс 2  mathan - 67  algebra - 59
Коваль  курс 1  mathan - 45  algebra - 51
Ткаченко  курс 2  mathan - 88  algebra - 79
Литвин  курс 1  mathan - 62  algebra - 65

🔤 Відсортовано за прізвищем (compareBySurname):
Іваненко  курс 1  mathan - 75  algebra - 82
Бондар  курс 2  mathan - 67  algebra - 59
Коваль  курс 1  mathan - 45  algebra - 51
Литвин  курс 1  mathan - 62  algebra - 65
Петренко  курс 2  mathan - 91  algebra - 88
Сидоренко  курс 1  mathan - 58  algebra - 64
Ткаченко  курс 2  mathan - 88  algebra - 79

🎓 Відсортовано за курсом (compareByCourse):
Іваненко  курс 1  mathan - 75  algebra - 82
Коваль  курс 1  mathan - 45  algebra - 51
Литвин  курс 1  mathan - 62  algebra - 65
Сидоренко  курс 1  mathan - 58  algebra - 64
Бондар  курс 2  mathan - 67  algebra - 59
Петренко  курс 2  mathan - 91  algebra - 88
Ткаченко  курс 2  mathan - 88  algebra - 79

Після переведення на наступний курс (mathan > 60 && algebra > 60):
Іваненко  курс 1  mathan - 75  algebra - 82
Коваль  курс 1  mathan - 45  algebra - 51
Литвин  курс 1  mathan - 62  algebra - 65
Сидоренко  курс 1  mathan - 58  algebra - 64
Бондар  курс 2  mathan - 67  algebra - 59
Петренко  курс 2  mathan - 91  algebra - 88
Ткаченко  курс 2  mathan - 88  algebra - 79

❌ Після видалення студентів з оцінками < 60:
Іваненко  курс 1  mathan - 75  algebra - 82
Литвин  курс 1  mathan - 62  algebra - 65
Петренко  курс 2  mathan - 91  algebra - 88
Ткаченко  курс 2  mathan - 88  algebra - 79