// Функция для добавления K элементов в конец файла void addStadiums(const vector<Stadium>& stadiums, const string& filename, int K) { ofstream file(filename, ios::binary | ios::app); if (!file) { cout << "Не удалось открыть файл для добавления данных.\n"; return; for (int i = 0; i < K; ++i) { const Stadium& stadium = stadiums[i % stadiums.size()]; file.write(reinterpret_cast<const char*>(&stadium), sizeof(Stadium)); } file.close(); } C // Функция для добавления K элементов в конец файла void addStadiums(const vector<Stadium>& stadiums, const string& filename, int K) { ofstream file(filename, ios::binary | ios::app); if (!file) { cout << "Не удалось открыть файл для добавления данных.\n"; return; for (int i = 0; i < K; ++i) { const Stadium& stadium = stadiums[i % stadiums.size()]; file.write(reinterpret_cast<const char*>(&stadium), sizeof(Stadium)); } file.close(); } Нужно что бы добавляемые значения можно было менять по типу: for (int i = 0; i < numStadiums; ++i) { Stadium stadium; cout << "Введите данные для стадиона #" << i + 1 << endl; cout << "Название: "; cin >> stadium.name; cout << "Адрес: "; cin >> stadium.address; cout << "Вместимость: "; cin >> stadium.capacity; cout << "Виды спорта: "; cin >> stadium.sports; stadiums.push_back(stadium); C for (int i = 0; i < numStadiums; ++i) { Stadium stadium; cout << "Введите данные для стадиона #" << i + 1 << endl; cout << "Название: "; cin >> stadium.name; cout << "Адрес: "; cin >> stadium.address; cout << "Вместимость: "; cin >> stadium.capacity; cout << "Виды спорта: "; cin >> stadium.sports; stadiums.push_back(stadium); Весь код на всякий: #include <iostream> #include <fstream> #include <string> #include <vector> using namespace std; struct Stadium { string name; string address; int capacity; string sports; }; // Функция для записи структурированных данных в файл void writeDataToFile(const vector<Stadium>& stadiums, const string& filename) { ofstream file(filename, ios::binary); if (!file) { cout << "Не удалось открыть файл для записи.\n"; return; } for (const auto& stadium : stadiums) { file.write(reinterpret_cast<const char*>(&stadium), sizeof(Stadium)); } file.close(); } // Функция для чтения и вывода содержимого файла void printFileContents(const string& filename) { ifstream file(filename, ios::binary); if (!file) { cout << "Не удалось открыть файл для чтения.\n"; return; } Stadium stadium; while (file.read(reinterpret_cast<char*>(&stadium), sizeof(Stadium))) { cout << "Название: " << stadium.name << endl; cout << "Адрес: " << stadium.address << endl; cout << "Вместимость: " << stadium.capacity << endl; cout << "Виды спорта: " << stadium.sports << endl; cout << endl; } file.close(); } // Функция для удаления элемента с заданным названием void removeStadiumByName(const string& filename, const string& name) { ifstream inFile(filename, ios::binary); if (!inFile) { cout << "Не удалось открыть файл для чтения.\n"; return; } ofstream outFile("temp.bin", ios::binary); if (!outFile) { cout << "Не удалось создать временный файл для записи.\n"; inFile.close(); return; } Stadium stadium; bool found = false; while (inFile.read(reinterpret_cast<char*>(&stadium), sizeof(Stadium))) { if (stadium.name != name) { outFile.write(reinterpret_cast<const char*>(&stadium), sizeof(Stadium)); } else { found = true; } } inFile.close(); outFile.close(); if (found) { remove(filename.c_str()); rename("temp.bin", filename.c_str()); cout << "Элемент с названием \"" << name << "\" удален из файла.\n"; } else { remove("temp.bin"); cout << "Элемент с названием \"" << name << "\" не найден в файле.\n"; } } // Функция для добавления K элементов в конец файла void addStadiums(const vector<Stadium>& stadiums, const string& filename, int K) { ofstream file(filename, ios::binary | ios::app); if (!file) { cout << "Не удалось открыть файл для добавления данных.\n"; return; for (int i = 0; i < K; ++i) { const Stadium& stadium = stadiums[i % stadiums.size()]; file.write(reinterpret_cast<const char*>(&stadium), sizeof(Stadium)); } file.close(); } // Функция для отображения диалогового меню и обработки выбранной опции int showMenu() { int choice; cout << "Диалоговое меню:\n"; cout << "1. Ввести изначальные данные\n"; cout << "2. Удалить стадион\n"; cout << "3. Добавить стадионы\n"; cout << "4. Вывести содержимое файла\n"; cout << "5. Выйти из программы\n"; cout << "Выберите опцию (1-5): "; cin >> choice; return choice; } int main() { setlocale(LC_ALL, "Russian"); // Создаем вектор структур "Стадион" vector<Stadium> stadiums; // Имя файла для сохранения данных string filename = "stadiums.txt"; int choice; do { choice = showMenu(); switch (choice) { case 1: { // Ввод изначальных данных int numStadiums; cout << "Введите количество стадионов: "; cin >> numStadiums; stadiums.clear(); // Очищаем существующие данные for (int i = 0; i < numStadiums; ++i) { Stadium stadium; cout << "Введите данные для стадиона #" << i + 1 << endl; cout << "Название: "; cin >> stadium.name; cout << "Адрес: "; cin >> stadium.address; cout << "Вместимость: "; cin >> stadium.capacity; cout << "Виды спорта: "; cin >> stadium.sports; stadiums.push_back(stadium); } // Записываем данные в файл writeDataToFile(stadiums, filename); break; } case 2: { // Удаление стадиона string nameToRemove; cout << "Введите название стадиона для удаления: "; cin >> nameToRemove; removeStadiumByName(filename, nameToRemove); break; } case 3: { // Добавление стадионов int numToAdd; cout << "Введите количество стадионов для добавления: "; cin >> numToAdd; addStadiums(stadiums, filename, numToAdd); break; } case 4: { // Вывод содержимого файла cout << "Содержимое файла:\n"; printFileContents(filename); break; } case 5: { // Выход из программы cout << "Программа завершена.\n"; break; } default: { cout << "Некорректный выбор. Попробуйте еще раз.\n"; break; } } cout << endl; } while (choice != 5); return 0; } C #include <iostream> #include <fstream> #include <string> #include <vector> using namespace std; struct Stadium { string name; string address; int capacity; string sports; }; // Функция для записи структурированных данных в файл void writeDataToFile(const vector<Stadium>& stadiums, const string& filename) { ofstream file(filename, ios::binary); if (!file) { cout << "Не удалось открыть файл для записи.\n"; return; } for (const auto& stadium : stadiums) { file.write(reinterpret_cast<const char*>(&stadium), sizeof(Stadium)); } file.close(); } // Функция для чтения и вывода содержимого файла void printFileContents(const string& filename) { ifstream file(filename, ios::binary); if (!file) { cout << "Не удалось открыть файл для чтения.\n"; return; } Stadium stadium; while (file.read(reinterpret_cast<char*>(&stadium), sizeof(Stadium))) { cout << "Название: " << stadium.name << endl; cout << "Адрес: " << stadium.address << endl; cout << "Вместимость: " << stadium.capacity << endl; cout << "Виды спорта: " << stadium.sports << endl; cout << endl; } file.close(); } // Функция для удаления элемента с заданным названием void removeStadiumByName(const string& filename, const string& name) { ifstream inFile(filename, ios::binary); if (!inFile) { cout << "Не удалось открыть файл для чтения.\n"; return; } ofstream outFile("temp.bin", ios::binary); if (!outFile) { cout << "Не удалось создать временный файл для записи.\n"; inFile.close(); return; } Stadium stadium; bool found = false; while (inFile.read(reinterpret_cast<char*>(&stadium), sizeof(Stadium))) { if (stadium.name != name) { outFile.write(reinterpret_cast<const char*>(&stadium), sizeof(Stadium)); } else { found = true; } } inFile.close(); outFile.close(); if (found) { remove(filename.c_str()); rename("temp.bin", filename.c_str()); cout << "Элемент с названием \"" << name << "\" удален из файла.\n"; } else { remove("temp.bin"); cout << "Элемент с названием \"" << name << "\" не найден в файле.\n"; } } // Функция для добавления K элементов в конец файла void addStadiums(const vector<Stadium>& stadiums, const string& filename, int K) { ofstream file(filename, ios::binary | ios::app); if (!file) { cout << "Не удалось открыть файл для добавления данных.\n"; return; for (int i = 0; i < K; ++i) { const Stadium& stadium = stadiums[i % stadiums.size()]; file.write(reinterpret_cast<const char*>(&stadium), sizeof(Stadium)); } file.close(); } // Функция для отображения диалогового меню и обработки выбранной опции int showMenu() { int choice; cout << "Диалоговое меню:\n"; cout << "1. Ввести изначальные данные\n"; cout << "2. Удалить стадион\n"; cout << "3. Добавить стадионы\n"; cout << "4. Вывести содержимое файла\n"; cout << "5. Выйти из программы\n"; cout << "Выберите опцию (1-5): "; cin >> choice; return choice; } int main() { setlocale(LC_ALL, "Russian"); // Создаем вектор структур "Стадион" vector<Stadium> stadiums; // Имя файла для сохранения данных string filename = "stadiums.txt"; int choice; do { choice = showMenu(); switch (choice) { case 1: { // Ввод изначальных данных int numStadiums; cout << "Введите количество стадионов: "; cin >> numStadiums; stadiums.clear(); // Очищаем существующие данные for (int i = 0; i < numStadiums; ++i) { Stadium stadium; cout << "Введите данные для стадиона #" << i + 1 << endl; cout << "Название: "; cin >> stadium.name; cout << "Адрес: "; cin >> stadium.address; cout << "Вместимость: "; cin >> stadium.capacity; cout << "Виды спорта: "; cin >> stadium.sports; stadiums.push_back(stadium); } // Записываем данные в файл writeDataToFile(stadiums, filename); break; } case 2: { // Удаление стадиона string nameToRemove; cout << "Введите название стадиона для удаления: "; cin >> nameToRemove; removeStadiumByName(filename, nameToRemove); break; } case 3: { // Добавление стадионов int numToAdd; cout << "Введите количество стадионов для добавления: "; cin >> numToAdd; addStadiums(stadiums, filename, numToAdd); break; } case 4: { // Вывод содержимого файла cout << "Содержимое файла:\n"; printFileContents(filename); break; } case 5: { // Выход из программы cout << "Программа завершена.\n"; break; } default: { cout << "Некорректный выбор. Попробуйте еще раз.\n"; break; } } cout << endl; } while (choice != 5); return 0; }