Вопрос задан 11.06.2023 в 06:35. Предмет Информатика. Спрашивает Айдар Анель.

Создать файл, данными которого являются: номер зачетной книжки, ФИО студента, список из 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; } Не знаю как организовать сортировку по среднему баллу студентов и вывести отсортированный файл. Буду признателен, если кто поможет.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Дроздюк Анастасия.

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

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

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



#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. Затем он сортирует вектор, используя функцию сортировки и функцию сравнения, которая сравнивает средние баллы учащихся. Наконец, он печатает отсортированный список студентов.

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

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для сортировки студентов по среднему баллу можно использовать контейнер std::map, где ключом будет являться средний балл, а значением - информация о студенте (номер зачетной книжки, ФИО). Затем можно пройти по отсортированному контейнеру и вывести данные в новый файл.

Вот пример, как можно модифицировать ваш код для сортировки и записи отсортированных данных в файл:

cpp
#include <iostream> #include <fstream> #include <string> #include <map> #include <vector> #include <algorithm> using namespace std; struct Student { string book_num; string surname; string name; string patronymic; double avg; Student(const string& book_num, const string& surname, const string& name, const string& patronymic, double avg) : book_num(book_num), surname(surname), name(name), patronymic(patronymic), avg(avg) {} }; bool compareStudents(const Student& s1, const Student& s2) { return s1.avg > s2.avg; // Сортировка по убыванию среднего балла } 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; vector<Student> students; while (in >> book_num >> surname >> name >> patronymic) { avg = 0; for (int i = 1; i <= 5; i++) { in >> sub >> mark; avg += mark; } avg /= 5.0; students.emplace_back(book_num, surname, name, patronymic, avg); } in.close(); sort(students.begin(), students.end(), compareStudents); ofstream out("sorted_output.txt"); if (out.is_open()) { for (const auto& student : students) { out << "Номер зачетной книжки: " << student.book_num << endl; out << "ФИО студента: " << student.surname << " " << student.name << " " << student.patronymic << endl; out << "Средний балл: " << student.avg << endl; out << endl; } out.close(); cout << "Файл успешно создан и заполнен отсортированными данными.\n"; } else { cout << "Не удалось открыть файл для записи.\n"; } } else { cout << "Не удалось открыть входной файл.\n"; } return 0; }

После выполнения этого кода будет создан файл "sorted_output.txt", содержащий отсортированные данные студентов по среднему баллу. Каждый студент будет представлен в следующем формате:

php
Номер зачетной книжки: <номер зачетной книжки> ФИО студента: <фамилия> <имя> <отчество> Средни
0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос