Почему выбрасывает с консоли на C++

После такого как я выбираю один из пунктов меню, мне приходит результат и сразу такая ошибка C:\Users\37533\source\repos\laba8-yes\x64\Debug\laba8-yes.exe (процесс 58840) завершил работу с кодом -1073741819. Как я могу это решить, чтобы после выбора программа дальше работала

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

struct Participant {
    string name;
    int birthYear;
    string country;
    string instrument;
    int place;

    // Конструктор по умолчанию
    Participant()
        : name(""), birthYear(0), country(""), instrument(""), place(0) {}

    // Конструктор
    Participant(string n, int year, string c, string inst, int p)
        : name(n), birthYear(year), country(c), instrument(inst), place(p) {}
};



// Функция для создания нового файла
void createFile() {
    ofstream file("contest_data.bin", ios::binary);
    file.close();
    cout << "Файл создан." << endl;
}

// Функция для добавления записи в файл
void addEntry() {
    ofstream file("contest_data.bin", ios::binary | ios::app);
    string name, country, instrument;
    int birthYear, place;

    cout << "Введите Ф.И.О. участника: ";
    cin.ignore();
    getline(cin, name);
    cout << "Введите год рождения: ";
    cin >> birthYear;
    cout << "Введите название страны: ";
    cin.ignore();
    getline(cin, country);
    cout << "Введите музыкальный инструмент: ";
    getline(cin, instrument);
    cout << "Введите место на конкурсе: ";
    cin >> place;

    Participant participant(name, birthYear, country, instrument, place);
    file.write((char*)&participant, sizeof(Participant));
    file.close();
    cout << "Запись добавлена." << endl;
}

// Функция для просмотра файла
void viewFile() {
    ifstream file("contest_data.bin", ios::binary);
    if (!file) {
        cout << "Файл не существует." << endl;
        return;
    }

    Participant participant;
    while (file.read((char*)&participant, sizeof(Participant)) && !file.eof()) {
        cout << "Ф.И.О.: " << participant.name << endl;
        cout << "Год рождения: " << participant.birthYear << endl;
        cout << "Страна: " << participant.country << endl;
        cout << "Инструмент: " << participant.instrument << endl;
        cout << "Место на конкурсе: " << participant.place << endl;
        cout << "-------------------" << endl;
    }

    file.close(); // Закрываем файл после просмотра данных.
}


// Функция для выполнения задачи: вывод самого молодого лауреата
void youngestWinner() {
    ifstream file("contest_data.bin", ios::binary);
    if (!file) {
        cout << "Файл не существует." << endl;
        return;
    }

    Participant youngestLaureate("", numeric_limits<int>::max(), "", "", 0);
    bool laureateFound = false;

    Participant participant;
    while (file.read((char*)&participant, sizeof(Participant)) && !file.eof()) {
        if (participant.place >= 1 && participant.place <= 3 && participant.birthYear < youngestLaureate.birthYear) {
            youngestLaureate = participant;
            laureateFound = true;
        }
    }
    file.close();

    if (laureateFound) {
        cout << "Самый молодой лауреат:" << endl;
        cout << "Ф.И.О.: " << youngestLaureate.name << endl;
        cout << "Год рождения: " << youngestLaureate.birthYear << endl;
        cout << "Страна: " << youngestLaureate.country << endl;
        cout << "Инструмент: " << youngestLaureate.instrument << endl;
        cout << "Место на конкурсе: " << youngestLaureate.place << endl;
    }
    else {
        cout << "Лауреаты не найдены." << endl;
    }
}



// Функция для выполнения задачи: вывод списка участников по инструментам в порядке занятых мест
void participantsByInstrument() {
    ifstream file("contest_data.bin", ios::binary);
    if (!file) {
        cout << "Файл не существует." << endl;
        return;
    }

    vector<Participant> participants;

    Participant participant;
    while (file.read((char*)&participant, sizeof(Participant)) && !file.eof()) {
        participants.push_back(participant);
    }
    file.close();

    if (!participants.empty()) {
        sort(participants.begin(), participants.end(), [](const Participant& a, const Participant& b) {
            return a.instrument < b.instrument || (a.instrument == b.instrument && a.place < b.place);
            });

        cout << "Список участников по инструментам в порядке занятых мест:" << endl;
        for (const Participant& p : participants) {
            cout << "Инструмент: " << p.instrument << ", Место: " << p.place << ", Ф.И.О.: " << p.name << endl;
        }
    }
    else {
        cout << "Участники не найдены." << endl;
    }
}

int main() {
    setlocale(LC_ALL, "Russian");
    int choice;
    while (true) {
        cout << "Меню:" << endl;
        cout << "1 – Создание нового файла" << endl;
        cout << "2 – Просмотр файла" << endl;
        cout << "3 – Добавление записи" << endl;
        cout << "4 – Самый молодой лауреат" << endl;
        cout << "5 – Участники по инструментам" << endl;
        cout << "6 – Выход" << endl;
        cout << "Выберите действие: ";
        cin >> choice;

        switch (choice) {
        case 1:
            createFile();
            break;
        case 2:
            viewFile();
            break;
        case 3:
            addEntry();
            break;
        case 4:
            youngestWinner();
            break;
        case 5:
            participantsByInstrument();
            break;
        case 6:
            return 0;
        default:
            cout << "Неверный выбор. Попробуйте снова." << endl;
        }
    }

    return 0;
}

Ответы (0 шт):