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. for (const Student& s : lst) {
  30. cout << s.surname << " курс " << s.course
  31. << " mathan - " << s.mathan
  32. << " algebra - " << s.algebra << endl;
  33. }
  34. cout << endl;
  35. }
  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 << "Відсортовано за прізвищем\n";
  54. printList(students);
  55.  
  56.  
  57. students.sort(compareByCourse);
  58. cout << "Відсортовано за курсом \n";
  59. printList(students);
  60.  
  61. for (Student& s : students) {
  62. if (s.mathan > 60 && s.algebra > 60) {
  63. s.course++;
  64. }
  65. }
  66.  
  67. cout << "Після переведення на наступний курс \n";
  68. printList(students);
  69.  
  70.  
  71. students.remove_if(hasLowGrades);
  72. cout << "Після видалення студентів \n";
  73. printList(students);
  74.  
  75. return 0;
  76. }
  77.  
Success #stdin #stdout 0.01s 5316KB
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

Відсортовано за прізвищем
Іваненко  курс 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

Відсортовано за курсом 
Іваненко  курс 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

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

Після видалення студентів 
Іваненко  курс 2  mathan - 75  algebra - 82
Литвин  курс 2  mathan - 62  algebra - 65
Петренко  курс 3  mathan - 91  algebra - 88
Ткаченко  курс 3  mathan - 88  algebra - 79