Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <iostream>
- #include <string>
- #include <iomanip>
- #include <fstream>
- #include <Windows.h>
- using namespace std;
- const int N = 100;
- const int L = 20;
- struct toys {
- string name;
- int value;
- int minAge;
- int maxAge;
- };
- struct perToys {
- int kolvo;
- int minAge;
- int maxAge;
- };
- //прототипы функций
- void InputArrFile(toys x[], int &k);
- void OutputInArrConsole(toys x[], int k);
- void OutputOutArrConsole(toys x[], int k);
- void FindToys(toys x[], int k, toys y[], int &l);
- void AddToy(toys x[], int &n);
- void DeleteToy(toys x[], int &k);
- void SortInArrValue(toys x[], int k);
- void SortOutArrValue(toys x[], int k);
- void SortOutArrAlf1(toys x[], int k);
- void SortOutArrAlf2(toys x[], int k);
- void OutputArrFile(toys x[], int k);
- int prompt_menu_item() {
- int variant;
- cout << "----------------------------------------------" << endl;
- cout << "| МЕНЮ |" << endl;
- cout << "----------------------------------------------" << endl;
- cout << "|" << setw(45) << "1.Ввод массива структур через файл |" << endl;
- cout << "|" << setw(45) << "2.Вывод исх. массива структур в консоль |" << endl;
- cout << "|" << setw(45) << "3.Поиск записей в массиве структур |" << endl;
- cout << "|" << setw(45) << "4.Вывод вых. массива структур в консоль |" << endl;
- cout << "|" << setw(45) << "5.Добавить запись |" << endl;
- cout << "|" << setw(45) << "6.Удалить запись |" << endl;
- cout << "|" << setw(45) << "7.Сортировка исх. массива по стоимости |" << endl;
- cout << "|" << setw(45) << "8.Сортировка вых. массива по алфавиту1 |" << endl;
- cout << "|" << setw(45) << "9.Сортировка вых. массива по алфавиту2 |" << endl;
- cout << "|" << setw(45) << "10.Вывод исх. массива структур в файл |" << endl;
- cout << "|" << setw(45) << "11.Вывод вых. массива структур в файл |" << endl;
- cout << "|" << setw(45) << "12.Создать перечень игрушек |" << endl;
- cout << "|" << setw(45) << "13.Вывод перечня в консоль|" << endl;
- cout << "|" << setw(45) << "14.Сортировка перечня по диапазону|" << endl;
- cout << "|" << setw(45) << "15.Сортировка перечня по кол-ву|" << endl;
- cout << "|" << setw(45) << "16.Вывод перечня в файл|" << endl;
- cout << "|" << setw(45) << "17.Выход из программы |" << endl << endl;
- cout << "Выберите пункт меню: ";
- cin >> variant;
- return variant;
- }
- //добавить запись в массив
- void AddToy(toys x[], int &n) {
- system("cls");
- toys t;
- if (n == N) {
- cout << "Массив заполнен\n";
- system("pause");
- return;
- }
- cout << "Введите название игрушки номер [" << n + 1 << "]: ";
- cin >> t.name;
- cout << "Введите стоимость игрушки: ";
- cin >> t.value;
- cout << "Введите мин. возраст: ";
- cin >> t.minAge;
- cout << "Введите макс. возраст: ";
- cin >> t.maxAge;
- x[n] = t;
- n++;
- cout << "Запись добавлена\n";
- system("pause");
- }
- //удаление записи из массива
- void DeleteToy(toys x[], int &k) {
- system("cls");
- int i, j;
- bool fl;
- OutputInArrConsole(x, k);
- cout << "Номер удаляемой строки: "; cin >> j;
- j--;
- if (j < 0 || j >= k) {
- cout << "Нет такой строки"; system("pause"); return;
- }
- cout << j + 1 << "-я строка: \n";
- cout << x[j].name << " " << x[j].value << endl;
- cout << "Удалить? (1/0): "; cin >> fl;
- if (fl == false) return;
- for (i = j + 1; i < k; i++)
- x[i - 1] = x[i];
- k--;
- cout << "Запись удалена\n";
- system("pause");
- }
- // поиск элемента в массиве структур
- void FindToys(toys x[], int k, toys y[], int &l) {
- system("cls");
- l = 0;
- bool find = false;
- int vozrast;
- cout << "Поиск игрушки в массиве" << endl;
- cout << "Введите возраст: ";
- cin >> vozrast;
- cout << "---------------------------------------------------" << endl;
- cout << "|№ | Название игрушки | Стоимость | Мин. | Макс. | " << endl;
- cout << "---------------------------------------------------" << endl;
- for (int i = 0; i < k; i++) {
- if (x[i].minAge <= vozrast and x[i].maxAge >= vozrast) {
- cout << "|" << setw(3) << i + 1 << "|" << setw(18) << x[i].name << "|" << setw(11) << x[i].value << "|" << setw(6) << x[i].minAge << "|" << setw(7) << x[i].maxAge << "|" << endl;
- find = true;
- y[l] = x[i];
- l++;
- }
- }
- if (find == false) cout << "Ни одной записи не найдено." << endl;
- system("pause");
- }
- void OutputInArrConsole(toys x[], int k) {
- system("cls");
- cout << "---------------------------------------------------" << endl;
- cout << "|№ | Название игрушки | Стоимость | Мин. | Макс. | " << endl;
- cout << "---------------------------------------------------" << endl;
- for (int i = 0; i < k; i++) {
- cout << "|" << setw(3) << i + 1 << "|" << setw(18) << x[i].name << "|" << setw(11) << x[i].value << "|" << setw(6) << x[i].minAge << "|" << setw(7) << x[i].maxAge << "|" << endl;
- }
- system("pause");
- }
- //вывод массива структур в консоль
- void OutputOutArrConsole(toys x[], int k) {
- system("cls");
- cout << "---------------------------------------------------" << endl;
- cout << "|№ | Название игрушки | Стоимость | Мин. | Макс. | " << endl;
- cout << "---------------------------------------------------" << endl;
- for (int i = 0; i < k; i++) {
- cout << "|" << setw(3) << i + 1 << "|" << setw(18) << x[i].name << "|" << setw(11) << x[i].value << "|" << setw(6) << x[i].minAge << "|" << setw(7) << x[i].maxAge << "|" << endl;
- }
- system("pause");
- }
- //вывод массива структур в файл
- void OutputArrFile(toys x[], int k) {
- ofstream fout;
- char file[L];
- cout << "Имя внешнего файла: "; cin >> file;
- fout.open(file);
- if (fout.fail()) {
- cout << file << " не открывается\n"; system("pause"); return;
- }
- fout << "---------------------------------------------------" << endl;
- fout << "|№ | Название игрушки | Стоимость | Мин. | Макс. | " << endl;
- fout << "---------------------------------------------------" << endl;
- for (int i = 0; i < k; i++) {
- fout << "|" << setw(3) << i + 1 << "|" << setw(18) << x[i].name << "|" << setw(11) << x[i].value << "|" << setw(6) << x[i].minAge << "|" << setw(7) << x[i].maxAge << "|" << endl;
- }
- fout.close();
- cout << "Массив сохранен в файл\n";
- system("pause");
- }
- //ввод массива структур из файла
- void InputArrFile(toys x[], int &k) {
- system("cls");
- ifstream fin;
- char file[L];
- cout << "Имя внешнего файла: "; cin >> file;
- fin.open(file);
- if (fin.fail()) {
- cout << file << " не открывается\n"; system("pause"); return;
- }
- while (!fin.eof()) {
- fin >> x[k].name >> x[k].value >> x[k].minAge >> x[k].maxAge;
- if (fin.fail()) break;
- k++;
- }
- fin.close();
- cout << "Файл введен\n"; cout << k << endl;
- system("pause");
- }
- // сортировка входного массива по стоимости
- void SortInArrValue(toys x[], int k) {
- system("cls");
- int fl;
- toys t;
- cout << "Сортировка записей по стоимости" << endl;
- do {
- fl = 0;
- for (int i = 0; i < k - 1; i++)
- if (x[i+1].value < x[i].value) {
- t = x[i];
- x[i] = x[i + 1];
- x[i + 1] = t;
- fl = 1;
- }
- } while (fl == 1);
- }
- // сортировка выходного массива
- void SortOutArrValue(toys x[], int k) {
- system("cls");
- int fl;
- toys t;
- cout << "Сортировка записей по стоимости" << endl;
- do {
- fl = 0;
- for(int i = 0; i<k; i++)
- if (x[i].value < x[i + 1].value) {
- t = x[i];
- x[i] = x[i + 1];
- x[i + 1] = t;
- fl = 1;
- }
- } while (fl == 1);
- }
- void SortOutArrAlf1(toys x[], int k) {
- system("cls");
- int fl;
- toys t;
- cout << "Сортировка записей по алфавиту1" << endl;
- do {
- fl = 0;
- for(int i = 0; i < k-1; i++)
- for(int j = i+1; j < k; j++)
- if (x[i].name > x[j].name) {
- t = x[i];
- x[i] = x[j];
- x[j] = t;
- fl = 1;
- }
- } while (fl == 1);
- }
- void SortOutArrAlf2(toys x[], int k) {
- system("cls");
- int fl;
- toys t;
- cout << "Сортировка записей по алфавиту2" << endl;
- do {
- fl = 0;
- for (int i = 0; i < k - 1; i++)
- for (int j = i+1; j < k; j++) {
- if (x[i].name > x[j].name) {
- t = x[i];
- x[i] = x[j];
- x[j] = t;
- fl = 1;
- }
- if (x[i].name == x[j].name) {
- if (x[i].minAge < x[j].minAge) {
- t = x[i];
- x[i] = x[j];
- x[j] = t;
- fl = 1;
- }
- }
- }
- } while (fl == 1);
- }
- void CreatePerech(toys x[], int n, perToys y[], int &k) {
- int i, j, fl;
- k = 0;
- for (i = 0; i < n; i++) {
- fl = 0;
- for (j = 0; j < k; j++)
- if ((x[i].minAge == y[j].minAge) && (x[i].maxAge == y[j].maxAge)) {
- y[j].kolvo = y[j].kolvo + 1;
- fl = 1;
- }
- if (fl == 0) {
- y[k].minAge = x[i].minAge;
- y[k].maxAge = x[i].maxAge;
- y[k].kolvo = 1;
- k++;
- }
- }
- cout << "Перечень сформирован\n"; cout << k; cout << endl; system("pause");
- }
- void OutputPerConsole(perToys x[], int k) {
- system("cls");
- cout << "-------------------------" << endl;
- cout << "| Диапазон | Количество | " << endl;
- cout << "-------------------------" << endl;
- for (int i = 0; i < k; i++) {
- cout << "|" << setw(7) << x[i].minAge << "-" << setw(2) << x[i].maxAge << setw(1) << "|" << setw(12) << x[i].kolvo << "|" << endl;
- }
- system("pause");
- }
- void SortPerDiap(perToys x[], int k) {
- system("cls");
- int fl, i;
- perToys t;
- do {
- fl = 0; k--;
- for (i = 0; i < k; i++) {
- if (x[i].minAge == x[i + 1].minAge)
- if (x[i].maxAge < x[i + 1].maxAge) {
- t = x[i];
- x[i] = x[i + 1];
- x[i + 1] = t;
- fl = 1;
- }
- if (x[i].minAge > x[i + 1].minAge) {
- t = x[i];
- x[i] = x[i + 1];
- x[i + 1] = t;
- fl = 1;
- }
- }
- } while (fl == 1);
- cout << "Сортировка завершена.\n"; system("pause");
- }
- void SortPerKolvo(perToys x[], int k) {
- system("cls");
- int fl, i;
- perToys t;
- do {
- fl = 0; k--;
- for (i = 0; i < k; i++)
- if (x[i].kolvo > x[i + 1].kolvo) {
- t = x[i];
- x[i] = x[i + 1];
- x[i + 1] = t;
- fl = 1;
- }
- } while (fl == 1);
- cout << "Сортировка завершена.\n"; system("pause");
- }
- void OutputPerFile(perToys x[], int k) {
- ofstream fout;
- char file[L];
- cout << "Имя внешнего файла: "; cin >> file;
- fout.open(file);
- if (fout.fail()) {
- cout << file << " не открывается\n"; system("pause"); return;
- }
- fout << "-------------------------" << endl;
- fout << "| Диапазон | Количество | " << endl;
- fout << "-------------------------" << endl;
- for (int i = 0; i < k; i++) {
- fout << "|" << setw(7) << x[i].minAge << "-" << setw(2) << x[i].maxAge << setw(1) << "|" << setw(12) << x[i].kolvo << "|" << endl;
- }
- cout << "Перечень сохранен в файл\n";
- system("pause");
- }
- int main() {
- setlocale(LC_ALL, "Russian");
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- int variant;
- toys a[N], b[N];
- perToys c[N];
- int m, l, k;
- m = 0; l = 0; k = 0;
- do {
- system("cls");
- variant = prompt_menu_item();
- switch (variant) {
- case 1: {
- InputArrFile(a, m); break;
- }
- case 2: {
- OutputInArrConsole(a, m); break;
- }
- case 3: {
- FindToys(a, m, b, l); break;
- }
- case 4: {
- OutputOutArrConsole(b, l); break;
- }
- case 5: {
- AddToy(a, m); break;
- }
- case 6: {
- DeleteToy(a, m); break;
- }
- case 7: {
- SortInArrValue(a, m); break;
- }
- case 8: {
- SortOutArrAlf1(b, l); break;
- }
- case 9: {
- SortOutArrAlf2(b, l); break;
- }
- case 10: {
- OutputArrFile(a, m); break;
- }
- case 11: {
- OutputArrFile(b, l); break;
- }
- case 12: {
- CreatePerech(a, m, c, k); break;
- }
- case 13: {
- OutputPerConsole(c, k); break;
- }
- case 14: {
- SortPerDiap(c, k); break;
- }
- case 15: {
- SortPerKolvo(c, k); break;
- }
- case 16: {
- OutputPerFile(c, k); break;
- }
- case 17: exit(EXIT_SUCCESS); break;
- default: cerr << "Вы выбрали неверный вариант" << endl; exit(EXIT_FAILURE);
- }
- } while (variant >= 1 && variant <= 17);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement