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;
- };
- class Toys {
- private:
- toys a[N], b[N];
- perToys c[N];
- int m, l, k;
- public:
- Toys() { m = 0; l = 0; k = 0; }
- Toys(Toys &B);
- void InputArrFile();
- void OutputInArrConsole();
- void OutputOutArrConsole();
- void FindToys();
- void SortFind();
- void AddToy();
- void DeleteToy();
- void SortInArrValue();
- void SortOutArrAlf1();
- void SortOutArrAlf2();
- void OutputInArrFile();
- void OutputOutArrFile();
- void CreatePerech();
- void OutputPerConsole();
- void SortPerDiap();
- void SortPerKolvo();
- void OutputPerFile();
- Toys& operator = (Toys &B);
- ~Toys() { cout << "Деструктор сработал\n"; system("pause"); }
- };
- Toys::Toys(Toys &B) {
- m = B.m;
- for (int i = 0; i < B.m; i++) {
- a[i] = B.a[i];
- }
- l = B.l;
- for (int i = 0; i < B.l; i++) {
- b[i] = B.b[i];
- }
- k = B.k;
- for (int i = 0; i < B.k; i++) {
- c[i] = B.c[i];
- }
- }
- Toys& Toys::operator= (Toys &B) {
- m = B.m;
- for (int i = 0; i < B.m; i++) {
- a[i] = B.a[i];
- }
- l = B.l;
- for (int i = 0; i < B.l; i++) {
- b[i] = B.b[i];
- }
- k = B.k;
- for (int i = 0; i < B.k; i++) {
- c[i] = B.c[i];
- }
- return B;
- }
- 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;
- cout << "|" << setw(45) << "18.Проверка каскадного присваивания |" << endl;
- cout << "|" << setw(45) << "19.Выход из программы |" << endl << endl;
- cout << "Выберите пункт меню: ";
- cin >> variant;
- return variant;
- }
- //Добавить запись в массив
- void Toys::AddToy() {
- toys t;
- if (m == N) {
- cout << "Массив заполнен\n";
- system("pause");
- return;
- }
- cout << "Введите название игрушки номер [" << m + 1 << "]: ";
- cin >> t.name;
- cout << "Введите стоимость игрушки: ";
- cin >> t.value;
- cout << "Введите мин. возраст: ";
- cin >> t.minAge;
- cout << "Введите макс. возраст: ";
- cin >> t.maxAge;
- a[m] = t;
- m++;
- cout << "Запись добавлена\n";
- system("pause");
- }
- //Удаление записи из массива
- void Toys::DeleteToy() {
- int i, j;
- bool fl;
- Toys::OutputInArrConsole();
- cout << "Номер удаляемой строки: "; cin >> j;
- j--;
- if (j < 0 || j >= m) {
- cout << "Нет такой строки"; system("pause"); return;
- }
- cout << j + 1 << "-я строка: \n";
- cout << a[j].name << " " << a[j].value << endl;
- cout << "Удалить? (1/0): "; cin >> fl;
- if (fl == false) return;
- for (i = j + 1; i < m; i++)
- a[i - 1] = a[i];
- m--;
- cout << "Запись удалена\n";
- system("pause");
- }
- //Поиск элемента в массиве структур
- void Toys::FindToys() {
- l = 0;
- bool find = false;
- int vozrast;
- cout << "Поиск игрушки в массиве" << endl;
- cout << "Введите возраст: ";
- cin >> vozrast;
- for (int i = 0; i < m; i++) {
- if (a[i].minAge <= vozrast and a[i].maxAge >= vozrast) {
- find = true;
- b[l] = a[i];
- l++;
- }
- }
- if (find == true) {
- cout << "---------------------------------------------------" << endl;
- cout << "|№ | Название игрушки | Стоимость | Мин. | Макс. | " << endl;
- cout << "---------------------------------------------------" << endl;
- }
- if (find == false) cout << "Ни одной записи не найдено." << endl;
- }
- //Сортировка при поиске
- void Toys::SortFind() {
- int fl;
- toys t;
- do {
- fl = 0;
- for (int i = 0; i < l; i++)
- if (b[i].value < b[i + 1].value) {
- t = b[i];
- b[i] = b[i + 1];
- b[i + 1] = t;
- fl = 1;
- }
- } while (fl == 1);
- for (int i = 0; i < l; i++) {
- cout << "|" << setw(3) << i + 1 << "|" << setw(18) << b[i].name << "|" << setw(11) << b[i].value << "|" << setw(6) << b[i].minAge << "|" << setw(7) << b[i].maxAge << "|" << endl;
- }
- system("pause");
- }
- //Вывод входного массива в консоль
- void Toys::OutputInArrConsole() {
- cout << "---------------------------------------------------" << endl;
- cout << "|№ | Название игрушки | Стоимость | Мин. | Макс. | " << endl;
- cout << "---------------------------------------------------" << endl;
- for (int i = 0; i < m; i++) {
- cout << "|" << setw(3) << i + 1 << "|" << setw(18) << a[i].name << "|" << setw(11) << a[i].value << "|" << setw(6) << a[i].minAge << "|" << setw(7) << a[i].maxAge << "|" << endl;
- }
- system("pause");
- }
- //Вывод массива структур в консоль
- void Toys::OutputOutArrConsole() {
- cout << "---------------------------------------------------" << endl;
- cout << "|№ | Название игрушки | Стоимость | Мин. | Макс. | " << endl;
- cout << "---------------------------------------------------" << endl;
- for (int i = 0; i < l; i++) {
- cout << "|" << setw(3) << i + 1 << "|" << setw(18) << b[i].name << "|" << setw(11) << b[i].value << "|" << setw(6) << b[i].minAge << "|" << setw(7) << b[i].maxAge << "|" << endl;
- }
- system("pause");
- }
- //Вывод массива структур в файл
- void Toys::OutputInArrFile() {
- 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 < m; i++) {
- fout << "|" << setw(3) << i + 1 << "|" << setw(18) << a[i].name << "|" << setw(11) << a[i].value << "|" << setw(6) << a[i].minAge << "|" << setw(7) << a[i].maxAge << "|" << endl;
- }
- fout.close();
- cout << "Массив сохранен в файл\n";
- system("pause");
- }
- void Toys::OutputOutArrFile() {
- 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 < l; i++) {
- fout << "|" << setw(3) << i + 1 << "|" << setw(18) << b[i].name << "|" << setw(11) << b[i].value << "|" << setw(6) << b[i].minAge << "|" << setw(7) << b[i].maxAge << "|" << endl;
- }
- fout.close();
- cout << "Массив сохранен в файл\n";
- system("pause");
- }
- //Ввод массива структур из файла
- void Toys::InputArrFile() {
- ifstream fin;
- string file;
- cout << "Имя внешнего файла: "; cin >> file;
- fin.open(file);
- if (fin.fail()) {
- cout << file << " не открывается\n"; system("pause"); return;
- }
- while (1) {
- fin >> a[m].name >> a[m].value >> a[m].minAge >> a[m].maxAge;
- if (fin.fail()) break;
- m++;
- }
- fin.close();
- cout << "Файл введен\n"; cout << m << endl;
- system("pause");
- }
- //Сортировка входного массива по стоимости
- void Toys::SortInArrValue() {
- int fl;
- toys t;
- cout << "Сортировка записей по стоимости" << endl;
- do {
- fl = 0;
- for (int i = 0; i < m - 1; i++)
- if (a[i + 1].value < a[i].value) {
- t = a[i];
- a[i] = a[i + 1];
- a[i + 1] = t;
- fl = 1;
- }
- } while (fl == 1);
- }
- //Сортировка выходного массива по алфавиту
- void Toys::SortOutArrAlf1() {
- int fl;
- toys t;
- cout << "Сортировка записей по алфавиту1" << endl;
- do {
- fl = 0;
- for (int i = 0; i < l - 1; i++)
- for (int j = i + 1; j < l; j++)
- if (b[i].name > b[j].name) {
- t = b[i];
- b[i] = b[j];
- b[j] = t;
- fl = 1;
- }
- } while (fl == 1);
- }
- //Сортировка выходного массива по алфавиту и нижней границе
- void Toys::SortOutArrAlf2() {
- int fl;
- toys t;
- cout << "Сортировка записей по алфавиту2" << endl;
- do {
- fl = 0;
- for (int i = 0; i < l - 1; i++)
- for (int j = i + 1; j < l; j++) {
- if (b[i].name > b[j].name) {
- t = b[i];
- b[i] = b[j];
- b[j] = t;
- fl = 1;
- }
- if (b[i].name == b[j].name) {
- if (b[i].minAge < b[j].minAge) {
- t = b[i];
- b[i] = b[j];
- b[j] = t;
- fl = 1;
- }
- }
- }
- } while (fl == 1);
- }
- //Создание перечня игрушек
- void Toys::CreatePerech() {
- int i, j, fl;
- k = 0;
- for (i = 0; i < m; i++) {
- fl = 0;
- for (j = 0; j < m; j++)
- if ((a[i].minAge == c[j].minAge) && (a[i].maxAge == c[j].maxAge)) {
- c[j].kolvo = c[j].kolvo + 1;
- fl = 1;
- }
- if (fl == 0) {
- c[k].minAge = a[i].minAge;
- c[k].maxAge = a[i].maxAge;
- c[k].kolvo = 1;
- k++;
- }
- }
- cout << "Перечень сформирован\n"; cout << k; cout << endl; system("pause");
- }
- //Вывод перечня в консоль
- void Toys::OutputPerConsole() {
- cout << "-------------------------" << endl;
- cout << "| Диапазон | Количество | " << endl;
- cout << "-------------------------" << endl;
- for (int i = 0; i < k; i++) {
- cout << "|" << setw(7) << c[i].minAge << "-" << setw(2) << c[i].maxAge << setw(1) << "|" << setw(12) << c[i].kolvo << "|" << endl;
- }
- system("pause");
- }
- //Сортировка перечня по диапазону
- void Toys::SortPerDiap() {
- int fl, i, j;
- j = k;
- perToys t;
- do {
- fl = 0; j--;
- for (i = 0; i < j; i++) {
- if (c[i].minAge == c[i + 1].minAge)
- if (c[i].maxAge < c[i + 1].maxAge) {
- t = c[i];
- c[i] = c[i + 1];
- c[i + 1] = t;
- fl = 1;
- }
- if (c[i].minAge > c[i + 1].minAge) {
- t = c[i];
- c[i] = c[i + 1];
- c[i + 1] = t;
- fl = 1;
- }
- }
- } while (fl == 1);
- cout << "Сортировка завершена.\n"; system("pause");
- }
- //Сортировка перечня по кол-ву
- void Toys::SortPerKolvo() {
- int fl, i, j;
- j = k;
- perToys t;
- do {
- fl = 0; j--;
- for (i = 0; i < j; i++)
- if (c[i].kolvo > c[i + 1].kolvo) {
- t = c[i];
- c[i] = c[i + 1];
- c[i + 1] = t;
- fl = 1;
- }
- } while (fl == 1);
- cout << "Сортировка завершена.\n"; system("pause");
- }
- //Вывод перечня в файл
- void Toys::OutputPerFile() {
- 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) << c[i].minAge << "-" << setw(2) << c[i].maxAge << setw(1) << "|" << setw(12) << c[i].kolvo << "|" << endl;
- }
- cout << "Перечень сохранен в файл\n";
- system("pause");
- }
- int main() {
- setlocale(LC_ALL, "Russian");
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- int variant;
- Toys A;
- do {
- system("cls");
- variant = prompt_menu_item();
- system("cls");
- switch (variant) {
- case 1: {
- A.InputArrFile(); break;
- }
- case 2: {
- A.OutputInArrConsole(); break;
- }
- case 3: {
- A.FindToys(); A.SortFind(); break;
- }
- case 4: {
- A.OutputOutArrConsole(); break;
- }
- case 5: {
- A.AddToy(); break;
- }
- case 6: {
- A.DeleteToy(); break;
- }
- case 7: {
- A.SortInArrValue(); break;
- }
- case 8: {
- A.SortOutArrAlf1(); break;
- }
- case 9: {
- A.SortOutArrAlf2(); break;
- }
- case 10: {
- A.OutputInArrFile(); break;
- }
- case 11: {
- A.OutputOutArrFile(); break;
- }
- case 12: {
- A.CreatePerech(); break;
- }
- case 13: {
- A.OutputPerConsole(); break;
- }
- case 14: {
- A.SortPerDiap(); break;
- }
- case 15: {
- A.SortPerKolvo(); break;
- }
- case 16: {
- A.OutputPerFile(); break;
- }
- case 17: {
- Toys B(A);
- A.OutputInArrConsole(); B.OutputInArrConsole();
- A.OutputOutArrConsole(); B.OutputOutArrConsole();
- A.OutputPerConsole(); B.OutputPerConsole();
- break;
- }
- case 18: {
- Toys B, C;
- C = B = A;
- A.OutputInArrConsole(); B.OutputInArrConsole(); C.OutputInArrConsole();
- A.OutputOutArrConsole(); B.OutputOutArrConsole(); C.OutputOutArrConsole();
- A.OutputPerConsole(); B.OutputPerConsole(); C.OutputPerConsole();
- break;
- }
- case 19: exit(EXIT_SUCCESS); break;
- default: cerr << "Вы выбрали неверный вариант" << endl; exit(EXIT_FAILURE);
- }
- } while (variant >= 1 && variant <= 19);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement