Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // AIP_2.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
- //
- #include <iostream>
- #include <string>
- #include <fstream> // chtenie faila
- #include <stdlib.h> //for using the function sleep
- #include <windows.h> // для Win32 систем
- #include <clocale>
- #include <typeinfo>
- #include <fstream>
- using namespace std;
- struct Hostel {
- string HostelN;
- string room;
- string debt;
- };
- struct University
- {
- string Rbook;
- string name;
- string surname;
- string patronymic;
- string faculty;
- string teamN;
- Hostel* HostelPtr = new Hostel();
- struct University* ptr;
- };
- //номер зачетки / фио / направление / группа / № Общаги / № комнаты /долги за общежитие
- // выбрать 5 комнат с макс долгом проживания
- University* head;
- string nameFile = "write.txt";
- int countK = 0;
- void List() { head = NULL; } // Инициализация списка
- int getCount() { return countK; } // Получение количества узлов списка
- bool isEmpty() { return head == NULL; } // Проверка, пуст ли список
- void setFileName() { cout << "Vvedite imay fila"; cin >> nameFile; }
- string getValue0(University* p) { return p->Rbook; } // Получение значения узла списка
- string getValue1(University* p) { return p->name; } // Получение значения узла списка patronymic
- string getValue2(University* p) { return p->surname; } // Получение значения узла списка
- string getValue3(University* p) { return p->patronymic; }
- string getValue4(University* p) { return p->faculty; } // Получение значения 2го узла списка
- string getValue5(University* p) { return p->teamN; }
- string getValue6(University* p) { return p->HostelPtr->HostelN; }
- string getValue7(University* p) { return p->HostelPtr->room; }
- string getValue8(University* p) { return p->HostelPtr->debt; }
- void SetValue(string num[]) {
- cout << "Введите номер зачетной книжки: "; cin >> num[0];
- cout << "Введите имя: "; cin >> num[1];
- cout << "Введите фамелию: "; cin >> num[2];
- cout << "Введите отчество: "; cin >> num[3];
- cout << "Введите направление: "; cin >> num[4];
- cout << "Введите группу: "; cin >> num[5];
- cout << "Введите № общежития: "; cin >> num[6];
- cout << "Введите № комноты: "; cin >> num[7];
- cout << "Введите долги: "; cin >> num[8];
- }
- void SetNode(University* elem, string num[]) {
- elem->Rbook = num[0];
- elem->name = num[1];
- elem->surname = num[2];
- elem->patronymic = num[3];
- elem->faculty = num[4];
- elem->teamN = num[5];
- elem->HostelPtr->HostelN = num[6];
- elem->HostelPtr->room = num[7];
- elem->HostelPtr->debt = num[8];
- }
- University* Next(University* University)
- {
- if (isEmpty()) return NULL;
- return University->ptr;
- }
- void Help()
- {
- cout << "Operation Dobav_head-1 head_del-2 AddTail-3 DelTail-4 Print-5 Delet_ALL-6 ReedOf.Txt-7 \n";
- cout << "WriteFromProgToTxt-8 Print_By_value-9 Del_By_value-10 Exit-anyKEY SetFileName-11 sort()-12 \n";
- }
- int ValidChislo(string s) {
- for (auto c : s) {
- if ((c <= 'z') && (c >= 'a')) {
- cout << "Vi vveli text ne tuda"; return 0;
- }
- else if ((c <= 'Z') && (c >= 'A')) {
- cout << "Vi vveli text ne tuda"; return 0;
- }
- else if ((c <= 'Я') && (c >= 'А')) {
- cout << "Vi vveli text ne tuda"; return 0;
- }
- else if ((c <= 'я') && (c >= 'а')) {
- cout << "Vi vveli text ne tuda"; return 0;
- }
- }
- return 1;
- }
- int ValidText(string s) {
- for (auto c : s)
- if ((c <= '9') && (c >= '0')) {
- cout << "Vi vveli cislo ne tuda";
- return 0;
- }
- return 1;
- }
- //University* ChekValidALL(string num0, string num1, string num2, string num3, string num4, string num5, string num6, string num7)
- University* ChekValidALL(string num[])
- {
- if (!ValidChislo(num[0])) { cout << " 0-HostelN \n"; return NULL; }
- if (!ValidText(num[1])) { cout << " 1-Rbook \n"; return NULL; }
- if (!ValidText(num[2])) { cout << " 2-name \n"; return NULL; }
- if (!ValidText(num[3])) { cout << " 3-name \n"; return NULL; }
- if (!ValidText(num[4])) { cout << " 4-name \n"; return NULL; }
- //if (!ValidChislo(num[5])) { cout << " 5-faculty \n"; return NULL; }
- if (!ValidChislo(num[6])) { cout << " 6-HostelN \n"; return NULL; }
- if (!ValidChislo(num[7])) { cout << " 7-room \n"; return NULL; }
- if (!ValidChislo(num[8])) { cout << " 8-debt \n"; return NULL; }
- }
- University* Add(string num[], University* university_ = NULL)
- {
- ChekValidALL(num);
- University* elem = new University();
- SetNode(elem, num);
- //countK++;
- if (university_ == NULL) // Добавление нового корня
- {
- if (head == NULL) {
- elem->ptr = NULL;
- head = elem;
- }
- else {
- elem->ptr = head;
- head = elem;
- }
- return elem;
- }
- elem->ptr = university_->ptr; // Добавление узла после текущего
- university_->ptr = elem;
- return elem;
- }
- University* getLast()
- {
- University* p = head;
- while (Next(p) != NULL)
- p = Next(p);
- return p;
- }
- void ReedOfTxtToProg(string nameFile)
- {
- ifstream inf(nameFile);
- // Если мы не можем открыть файл для чтения его содержимого,
- if (!inf)
- {
- // то выводим следующее сообщение об ошибке и выполняем функцию exit()
- cerr << nameFile << " could not be opened for reading!" << endl;
- cerr << "Perezagruzi programmu" << endl;
- Sleep(5000);
- exit(1);
- }
- //string z0, z1, z2, z3, z4, z5, z6, z7;
- string z[9];
- // Пока есть, что читать,
- while (inf)
- {
- // то перемещаем то, что можем прочитать, в строку, а затем выводим эту строку на экран
- string strInput;
- getline(inf, strInput);
- int ci = 0;
- string word = "";
- int probels = 0;
- while ((strInput[ci] != NULL)) {
- strInput[ci];
- if (strInput[ci] != ' ') { word += strInput[ci]; }
- if ((strInput[ci] == ' ') || (strInput[ci + 1] == NULL)) {
- probels++;
- switch (probels) {
- case 1: z[0] = word;
- case 2: z[1] = word;
- case 3: z[2] = word;
- case 4: z[3] = word;
- case 5: z[4] = word;
- case 6: z[5] = word;
- case 7: z[6] = word;
- case 8: z[7] = word;
- case 9: z[8] = word;
- default: word = "";
- }
- }
- ci++;
- }
- University* s = getLast();
- if (strInput != "\0") { s = Add(z, s); }
- }
- Sleep(500);
- }
- void Print()
- {
- if (isEmpty()) { cout << "Список пуст" << endl; return; }
- University* p = head;
- do {
- cout << getValue0(p)
- << " " << getValue1(p)
- << " " << getValue2(p)
- << " " << getValue3(p)
- << " " << getValue4(p)
- << " " << getValue5(p)
- << " " << getValue6(p)
- << " " << getValue7(p)
- << " " << getValue8(p)
- << "\n";
- p = Next(p);
- } while (p != NULL);
- cout << endl;
- }
- ////////////////
- University* head_del()
- {
- University* h = head;
- University* t = head;
- if (h == NULL) { return NULL; } // В списке нет узлов
- //<operation>
- head = h->ptr;
- t = NULL;
- delete t;
- //</operation>
- }
- ////////////////
- ////////////////
- University* Dobav_head()
- {
- University* temp = NULL;
- University* head2 = head;
- string num[9];
- SetValue(num);
- ChekValidALL(num);
- University* elem = new University();
- SetNode(elem, num);
- elem->ptr = head2;
- head = elem;
- if (head2 == NULL) { return NULL; } // В списке нет узлов
- }
- ////////////////
- University* Corr_By_value()
- {
- University* temp = NULL;
- University* head2 = head;
- string value_del;
- cout << "Поиск по фамилии: "; cin >> value_del;
- if (head2 == NULL) { cout << "pusto "; return NULL; } // В списке нет узло
- int j = 0;
- while (head2 != NULL) {
- temp = head2;
- if (temp->surname == value_del) {
- cout << "Корректировка по фамилии:\n";
- string num2[9];
- SetValue(num2);
- SetNode(temp, num2);
- break;
- }
- head2 = head2->ptr;
- j++;
- }
- }
- ///////////////////
- void gotovo() {
- cout << "ГОТОВО!\n";
- }
- void StekOperation()
- {
- cout << "Enter any KEY operation Help-0: ";
- while (true)
- {
- int opN;
- cin >> opN;
- switch (opN) {
- case 0:
- Help();
- break;
- case 1:
- cout << "Dobav_head\n"; Dobav_head(); gotovo();
- break;
- case 2:
- cout << "head_del\n"; head_del(); gotovo();
- break;
- case 3:
- cout << "Corr_By_value\n"; Corr_By_value();gotovo();
- break;
- //case 4:
- // cout << "DelTail\n"; LIFO(); head_del();
- // break;
- case 5:
- cout << "Print\n"; Print();
- break;
- //case 6:
- // cout << "Delete_ALL\n"; Delete_ALL();
- // break;
- case 7:
- cout << "ReedOfTxtToProg\n"; ReedOfTxtToProg(nameFile);
- break;
- //case 8:
- // cout << "WriteFromProgToTxt\n"; WriteFromProgToTxt(nameFile);
- // break;
- //case 9:
- // cout << "Print_By_value\n"; Print_By_value();
- // break;
- //case 10:
- // cout << "Del_By_value\n"; Del_By_value();
- // break;
- //case 11:
- // cout << "Set file name: "; cin >> nameFile;
- // break;
- //case 12:
- // cout << "sort()";
- // sort();
- // break;
- default:
- cout << "Exit\n"; goto tryAgain;
- }
- }
- tryAgain: // это лейбл
- exit;
- }
- // Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
- // Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
- int main()
- {
- //setlocale(LC_ALL, "ru");
- setlocale(LC_CTYPE, "Russian");
- SetConsoleCP(1251);// установка кодовой страницы win-cp 1251 в поток ввода
- SetConsoleOutputCP(1251); // установка кодовой страницы win-cp 1251 в поток вывода
- setlocale(LC_ALL, "Rus"); // Подключение русского языка
- StekOperation();
- }
- // Советы по началу работы
- // 1. В окне обозревателя решений можно добавлять файлы и управлять ими.
- // 2. В окне Team Explorer можно подключиться к системе управления версиями.
- // 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
- // 4. В окне "Список ошибок" можно просматривать ошибки.
- // 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
- // 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
Add Comment
Please, Sign In to add comment