Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- #include <iterator>
- #include <string.h>
- #include <stdlib.h>
- #include <deque>
- #include <list>
- using namespace std;
- struct house
- {
- int Room;
- int Sqr;
- int Level;
- string adress;
- };
- class order
- {
- public:
- string fio;
- house h1;
- friend ostream& operator <<(ostream& out, const order& n);
- };
- ostream& operator <<(ostream& out, const order& ord)
- {
- out << "**************************************************************** " << endl;
- out << "ФИО-: " << ord.fio << endl;
- out << "Частный дом: " << endl;
- out << "Количество комнат - " << ord.h1.Room << endl;
- out << "Площадь - " << ord.h1.Sqr << endl;
- out << "Этаж - " << ord.h1.Level << endl;
- out << "Адрес - " << ord.h1.adress << endl;
- return out;
- }
- void Print(list<order>& change_houses) {
- for (auto i = change_houses.begin(); i != change_houses.end(); i++) {
- cout << *i << endl;
- }
- }
- void sortFIO(list<order> &change_houses) {
- order swap;
- auto j = change_houses.begin();
- auto jNext = j;
- jNext++;
- while (jNext != change_houses.end()) {
- if (jNext->fio.at(0) < j->fio.at(0))
- {
- swap = *jNext;
- *jNext = *j;
- *j = swap;
- sortFIO(change_houses);
- }
- jNext++;
- j++;
- }
- //Print(change_houses);
- return;
- }
- void sortADRESS(list<order>& change_houses) {
- order swap;
- auto j = change_houses.begin();
- auto jNext = j;
- jNext++;
- while (jNext != change_houses.end()) {
- if (jNext->h1.adress.at(0) < j->h1.adress.at(0))
- {
- swap = *jNext;
- *jNext = *j;
- *j = swap;
- sortADRESS(change_houses);
- }
- jNext++;
- j++;
- }
- Print(change_houses);
- return;
- }
- void sortSQR(list<order>& change_houses) {
- order swap;
- auto j = change_houses.begin();
- auto jNext = j;
- jNext++;
- while (jNext != change_houses.end()) {
- if (jNext->h1.Sqr < j->h1.Sqr)
- {
- swap = *jNext;
- *jNext = *j;
- *j = swap;
- sortSQR(change_houses);
- }
- jNext++;
- j++;
- }
- Print(change_houses);
- return;
- }
- void sortRoom(list<order>& change_houses) {
- order swap;
- auto j = change_houses.begin();
- auto jNext = j;
- jNext++;
- while (jNext != change_houses.end()) {
- if (jNext->h1.Room < j->h1.Room)
- {
- swap = *jNext;
- *jNext = *j;
- *j = swap;
- sortRoom(change_houses);
- }
- jNext++;
- j++;
- }
- Print(change_houses);
- return;
- }
- void sortLev(list<order>& change_houses) {
- order swap;
- auto j = change_houses.begin();
- auto jNext = j;
- jNext++;
- while (jNext != change_houses.end()) {
- if (jNext->h1.Level < j->h1.Level)
- {
- swap = *jNext;
- *jNext = *j;
- *j = swap;
- sortLev(change_houses);
- }
- jNext++;
- j++;
- }
- Print(change_houses);
- return;
- }
- void Poisk(list<order>& change_houses) {
- auto j = change_houses.begin();
- cout << "Введите ключевое слово для поиска по ФИО и адрессу из списка: ";
- string nameStr;
- cin >> nameStr;
- cout << "Введите ключую цифру для поиска из списка: ";
- int nameInt;
- cin >> nameInt;
- while (j != change_houses.end()) {
- if (j->fio == nameStr)
- {
- cout << "найден в имени" << endl;
- cout << *j << endl;
- }
- if (j->h1.adress == nameStr)
- {
- cout << "найден в адресах" << endl;
- cout << *j << endl;
- }
- if (j->h1.Level == nameInt)
- {
- cout << "найден в этажах" << endl;
- cout << *j << endl;
- }
- if (j->h1.Room == nameInt)
- {
- cout << "найден в комнотах" << endl;
- cout << *j << endl;
- }
- if (j->h1.Sqr == nameInt)
- {
- cout << "найден в площади" << endl;
- cout << *j << endl;
- }
- j++;
- }
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- list<order> change_houses;
- int i;
- while (1)
- {
- cout << "Введите цифру:" << endl;
- cout << "1 - Ввод записи" << endl;
- cout << "2 - Поиск по ключу" << endl;
- cout << "3 - Вывод всех записей" << endl;
- cout << "4 - удаление по ФИО" << endl;
- cout << "5 - Сортировка по имени и по адресу" << endl;
- cout << "6 - Сортировка по параметрам" << endl;
- cin >> i;
- switch (i)
- {
- case 1:
- {
- order ord;
- cout << "Введите ФИО - ";
- cin >> ord.fio;
- cout << "Характеристика дома:" << endl;
- cout << "Количество комнат - ";
- cin >> ord.h1.Room;
- cout << "Площадь - ";
- cin >> ord.h1.Sqr;
- cout << "Этаж - ";
- cin >> ord.h1.Level;
- cout << "Адрес - ";
- cin >> ord.h1.adress;
- change_houses.push_back(ord);
- break;
- }
- case 2:
- {
- Poisk(change_houses);
- break;
- }
- case 3:
- {
- Print(change_houses);
- break;
- }
- case 4: {
- auto j = change_houses.begin();
- cout << "Введите ФИО для удаления из списка: ";
- string nameDel;
- while (j != change_houses.end()) {
- if (j->fio == nameDel)
- {
- cout <<"удеалён "<< endl;
- change_houses.erase(j);
- break;
- }
- j++;
- }
- break;
- }
- case 5: {
- cout << " Сортировка по ФИО" << endl;
- sortFIO(change_houses);
- Print(change_houses);
- cout << " Сортировка по Адрессу" << endl;
- sortADRESS(change_houses);
- break;
- }
- case 6: {
- cout << " Сортировка по площади" << endl;
- sortSQR(change_houses);
- cout << " Сортировка по комнотам" << endl;
- sortRoom(change_houses);
- cout << " Сортировка по этажу" << endl;
- sortLev(change_houses);
- break;
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment