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

  • 2
Написать код, который считывает информацию о спортсменах - фамилию, имя, место - из текстового файла. Затем отсортировать эти данные по фамилии в алфавитном порядке и вывести их в другой текстовый файл. Желательно использовать C#/C++, хотя любой другой язык также подойдет.
Morskoy_Skazochnik_621
43
Конечно, я помогу вам с этой задачей.

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

cpp
#include
#include
#include
#include
#include

struct Sportsman {
std::string surname;
std::string name;
int place;
};

// Функция для сравнения фамилий спортсменов
bool compare(sportsman a, sportsman b) {
return a.surname < b.surname;
}

int main() {
std::vector sportsmen;
std::ifstream inputFile("input.txt");

// Проверка, открыт ли файл успешно
if (!inputFile) {
std::cerr << "Ошибка открытия файла!" << std::endl;
return 1;
}

std::string surname, name;
int place;

// Считываем информацию о спортсменах из файла
while (inputFile >> surname >> name >> place) {
Sportsman newSportsman;
newSportsman.surname = surname;
newSportsman.name = name;
newSportsman.place = place;
sportsmen.push_back(newSportsman);
}

// Сортируем спортсменов по фамилии
std::sort(sportsmen.begin(), sportsmen.end(), compare);

std::ofstream outputFile("output.txt");

// Проверка, открыт ли файл успешно
if (!outputFile) {
std::cerr << "Ошибка открытия файла!" << std::endl;
return 1;
}

// Записываем отсортированные данные в файл
for (const auto& sportsman : sportsmen) {
outputFile << sportsman.surname << " " << sportsman.name << " " << sportsman.place << std::endl;
}

// Закрываем файлы
inputFile.close();
outputFile.close();

std::cout << "Данные успешно отсортированы и записаны в файл output.txt" << std::endl;

return 0;
}


Давайте разберем этот код по шагам:

1. Сначала мы включаем необходимые библиотеки (`iostream`, `fstream`, `string` и `vector`) и объявляем структуру `Sportsman`, которая представляет информацию о спортсмене, включающую фамилию, имя и место.
2. Затем у нас есть функция `compare`, которая используется в процессе сортировки спортсменов. Она сравнивает фамилии двух спортсменов и возвращает `true`, если фамилия первого спортсмена идет перед фамилией второго спортсмена в алфавитном порядке.
3. В функции `main` мы создаем вектор `sportsmen` для хранения информации о спортсменах и открываем файл `input.txt` для чтения.
4. Затем мы читаем информацию о спортсменах из файла, считывая сначала фамилию, затем имя и место каждого спортсмена. Затем мы создаем объект структуры `Sportsman`, заполняем его данными и добавляем его в вектор `sportsmen`.
5. После того, как мы считали всю информацию, мы вызываем функцию `std::sort` из стандартной библиотеки для сортировки спортсменов в векторе `sportsmen` с использованием функции сравнения `compare`.
6. Далее мы открываем файл `output.txt` для записи отсортированных данных.
7. Затем мы проходим циклом `for` по всем спортсменам в векторе `sportsmen` и записываем их фамилию, имя и место в файл `output.txt`, разделяя их пробелами и переходя на новую строку.
8. В конце мы закрываем файлы `input.txt` и `output.txt` и выводим сообщение о успешном завершении программы.

Не забудьте создать текстовый файл `input.txt` и заполнить его данными о спортсменах в следующем формате:


Иванов Иван 1
Петров Петр 3
Сидоров Алексей 2


После выполнения программы в файле `output.txt` будет содержаться отсортированный список спортсменов по фамилии:


Иванов Иван 1
Петров Петр 3
Сидоров Алексей 2


Это решение использует язык программирования C++, но вы можете использовать похожий подход и на других языках программирования, таких как C# или других.