Предмет: Информатика, автор: Hyenanasty

Создать файл, данными которого являются: номер зачетной книжки, ФИО студента, список из 5
предметов с оценками в сессии. Отсортировать файл по среднему баллу каждого студента в сессии

Есть кусок кода : #include
#include
#include
#include
#include
#include
using namespace std;
int main(){
setlocale(LC_ALL,"rus");
ifstream in("input.txt");
if (in.is_open())
{
int mark, k=0;
double avg=0., avg_student;
string book_num, surname, name, patronymic, sub;

while (in >> book_num >> surname >> name >> patronymic)
{
for(int i = 1; i <= 5; i++)
{
in >> sub >> mark;
avg+=mark;
}
k++;
}

avg/=5.*k;
cout << "average=" << avg << "\n";

in.clear();
in.seekg(0);

cout << "RESULT LIST:\n";
while (in >> book_num >> surname >> name >> patronymic)
{
avg_student=0;
for(int i = 1; i <= 5; i++)
{
in >> sub >> mark;
avg_student+=mark;

}
avg_student/=5.;


}
in.close();
}
else cout << "Unable to open file\n";
return 0;
}

Не знаю как организовать сортировку по среднему баллу студентов и вывести отсортированный файл. Буду признателен, если кто поможет.

Ответы

Автор ответа: M0hlik
1

Чтобы отсортировать файл по среднему баллу каждого учащегося, вы можете использовать структуру данных, например вектор или массив, для хранения информации о каждом учащемся. Вы можете создать структуру или класс для представления каждого учащегося, который будет содержать номер книги, имя и список их оценок.

После того, как вы прочитали все данные из файла и сохранили их в своей структуре данных, вы можете использовать функцию сортировки из библиотеки алгоритмов для сортировки учащихся по их среднему баллу. Функция сортировки принимает в качестве аргумента функцию сравнения, которую можно использовать для указания критериев сортировки.

Вот пример того, как вы могли бы реализовать сортировку и печать отсортированного файла, используя вектор студенческих структур:



#include <algorithm>

#include <iostream>

#include <fstream>

#include <string>

#include <vector>

using namespace std;

struct Student {

 string book_num;

 string surname;

 string name;

 string patronymic;

 double avg_score;

};

bool compareStudents(const Student& s1, const Student& s2) {

 return s1.avg_score > s2.avg_score;

}

int main() {

 // Open the input file

 ifstream in("input.txt");

 // Vector to store the student information

 vector<Student> students;

 // Read the data from the file and store it in the vector

 if (in.is_open()) {

   string book_num, surname, name, patronymic, subject;

   int mark;

   while (in >> book_num >> surname >> name >> patronymic) {

     Student s;

     s.book_num = book_num;

     s.surname = surname;

     s.name = name;

     s.patronymic = patronymic;

     s.avg_score = 0;

     for (int i = 1; i <= 5; i++) {

       in >> subject >> mark;

       s.avg_score += mark;

     }

     s.avg_score /= 5;

     students.push_back(s);

   }

   in.close();

 } else {

   cout << "Unable to open file\n";

   return 0;

 }

 // Sort the students by their average score

 sort(students.begin(), students.end(), compareStudents);

 // Print the sorted list of students

 cout << "SORTED RESULT LIST:\n";

 for (const Student& s : students) {

   cout << s.book_num << " " << s.surname << " " << s.name << " "

        << s.patronymic << " " << s.avg_score << "\n";

 }

 return 0;

}




Этот код считывает данные из входного файла и сохраняет их в векторе структур Student. Затем он сортирует вектор, используя функцию сортировки и функцию сравнения, которая сравнивает средние баллы учащихся. Наконец, он печатает отсортированный список студентов.

Обратите внимание, что этот код является всего лишь примером, и вам может потребоваться изменить его, чтобы он соответствовал вашим конкретным требованиям.

Похожие вопросы
Предмет: Математика, автор: marchuknatalija3
Предмет: Алгебра, автор: twistitwik11
Предмет: Английский язык, автор: Vladkyrgin95
Вставьте am, is, are. Предложения переведите.
1. He … a student. 2. Fred … not angry. 3. My friend … kind. 4. Her name … Mary. 5. She … a nice girl. 6. We … pupils. 7. His name … Tom. 8. I … seven. 9. Rex … brave and kind. 10. They … friends. 11. You … happy. 12. Her name … Bess. 13. She … nice and merry. 14. Kate … not lazy. 15. Her name … Jill. 16. She … seven. 17. He … a nice boy. 18. His house … nice. 19. Tim … slim and sad. 20. He … happy. 21. I and Tom … friends. 22. Nick … strong. 23. Tom … smart. 24. Mr. Greenwood … nice. 25. His pet … funny. 26. Bob … strong. 27. It … black. 28. I … a pupil. 29. My friend … brave. 30. You … sad. 31. They … strong. 32. Pete … nine. 33. Our cat … five. 34. She … seven. 35. They … ten. 36. My name … Kate. 37. I … six. 38. I … not a pupil. 39. My dog … grey. 40. His cat … black and white. 41. My pets … funny. 42. I … Dino. 43. My friend … strong and healthy. 44. Billy … fat. 45. We … in the park. 46. Crocodiles … green. 47. Her shirt … not dirty. 48. I … not big. 49. Dino … not a teacher. 50. Pupils … lazy. 51. Tiny … kind and funny. 52. I … seven. 53. You … a pupil. 54. Tom’s birthday … on the 8-th of July. 55. Tom … from Great Britain. 56. My pets … funny. 57. The girl’s flowers … nice. 58. I ... a student. 59. My father ... not a shop-assistant, he ... a scientist. 60. ... your aunt a nurse? - Yes, she ... . 61. ... they at home? - No, they ... not. They ... at school. 62. ... you an engineer? - Yes, I.... 63. ... your friend a photographer? No, she ... not a photographer, she ... a student. 64. ... your brothers at school? - Yes, they ... . 65. ... this her watch? - Yes, it ... . 66. Max ... an office-worker. 67. We ... late, sorry! 68. It … funny. 69. You … free. 70. They … a friendly family.