gpt-4-0314· OpenAI WildChat-4.8M (AI2)
Разработать программу, в которой будет организовано меню, выбор функций меню должно быть…
0
Download- User
Разработать программу, в которой будет организовано меню, выбор функций меню должно быть организовано по функциональной клавише. Вся информация должна храниться в массиве структур, с возможностью их записи в файл. Организовать сортировку данных различными методами (быстрая, Шелла, Пузырьковая), вывод результатов сортировки должен быть в табличной форме.
- Assistant
#include <iostream> #include <vector> #include <algorithm> #include <fstream> using namespace std; struct Data { int id; string name; float value; void display() const { printf("%-5d %-20s %.2f\n", id, name.c_str(), value); } }; // Сравнение двух структур по умолчанию bool compareDefault(const Data &a, const Data &b) { return a.id < b.id; } // Сортировка QuickSort void quickSort(vector<Data> &data, int low, int high, bool (*compare)(const Data &, const Data &) = compareDefault) { if (low < high) { int i = low; int j = high; Data pivot = data[(i + j) / 2]; do { while (compare(data[i], pivot)) i++; while (compare(pivot, data[j])) j--; if (i <= j) { swap(data[i], data[j]); i++; j--; } } while (i <= j); quickSort(data, low, j, compare); quickSort(data, i, high, compare); } } // Сортировка ShellSort void shellSort(vector<Data> &data, bool (*compare)(const Data &, const Data &) = compareDefault) { int n = data.size(); for (int gap = n / 2; gap > 0; gap /= 2) { for (int i = gap; i < n; i++) { Data temp = data[i]; int j; for (j = i; j >= gap && compare(temp, data[j - gap]); j -= gap) { data[j] = data[j - gap]; } data[j] = temp; } } } // Сортировка BubbleSort void bubbleSort(vector<Data> &data, bool (*compare)(const Data &, const Data &) = compareDefault) { int n = data.size(); for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (compare(data[j + 1], data[j])) { swap(data[j], data[j + 1]); } } } } void saveToFile(const vector<Data> &data, const string &filename) { ofstream file(filename); if (file.is_open()) { for (const Data &item : data) { file << item.id << " " << item.name << " " << item.value << "\n"; } file.close(); cout << "Data saved to " << filename << endl; } else { cerr << "Unable to open file " << filename << endl; } } void displayData(const vector<Data> &data) { printf("%-5s %-20s %s\n", "ID", "NAME", "VALUE"); for (const Data &item : data) { item.display(); } } int main() { vector<Data> data = { {1, "Item 1", 3.4}, {4, "Item 4", 0.5}, {2, "Item 2", 2.1}, {5, "Item 5", 5.5}, {3, "Item 3", 1.1} }; char choice; do { cout << "Menu:\n"; cout << "1. QuickSort\n"; cout << "2. ShellSort\n"; cout << "3. Bubble Sort\n"; cout << "4. Save to file\n"; cout << "5. Display data\n"; cout << "6. Exit\n"; cout << "Choose an option: "; cin >> choice; switch (choice) { case '1': quickSort(data, 0, data.size() - 1); break; case '2': shellSort(data); break; case '3': bubbleSort(data); break; case '4': saveToFile(data, "output.txt"); break; case '5': displayData(data); break; case '6': break; default: cout << "Invalid option. Please try again.\n"; break; } } while (choice != '6'); return 0; }Данная программа создает массив структур типа
Dataс возможностью сортировки (быстрой сортировки, сортировка Шелла, пузырьковая сортировка), вывода данных и сохранения в файл. Меню выбора функций организовано с использованием функциональных клавиш.