Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- #include <string>
- #include <iomanip>
- #include <conio.h>
- #include <fstream>
- #include <locale.h>
- #include <windows.h>
- #include <io.h>
- #include <fcntl.h>
- using namespace std;
- //----КОНСТАНТЫ----------
- const int up = 72,
- down = 80,
- right_btn = 77,
- left_btn = 75,
- enter = 13,
- esc = 27,
- del = 83,
- d_n = 20;
- const string items[9] =
- {
- "Создать список или добавить новый эл-т ",
- " Удаление всех элементов списка ",
- " Просмотр списка ",
- " Запись данных в файл ",
- " Чтение из файла ",
- " Изменить ",
- " Поиск ",
- " Старые книги ",
- " Выход "
- };
- const string items2[4] =
- {
- "Поиск по автору книги ",
- "Поиск по названию книги",
- "Поиск по жанру книги",
- "Выход(esc)"
- };
- const string items3[3] =
- {
- "Запись в текстовый файл",
- "Запись в бинарный файл"
- "Выход(esc)"
- };
- const string items4[3] =
- {
- "Чтение из текстового файла",
- "Чтение из бинарного файла",
- "Выход(esc)"
- };
- //=======ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ===============
- string filename;
- int num_pages = 5, // Кол-во элементов на одной странице
- width = 0, // Ширина окна
- height = 0; // Высота окна
- int kol_el = 0;// Кол-во элементов
- //-------------------------------------------
- struct info
- {
- string autor;
- string name;
- string izdatelstvo;
- string janr;
- string cost;
- int d = 0, m = 0, g = 0;
- };
- struct book
- {
- info inf;
- book* next = 0;
- book* pred = 0;
- };
- //-------------------------------------------
- book vvod_book();
- book* dob(book* end, const book& s);
- book* dob_first(const book& s);
- book* udal(book* beg);
- book* list(book* beg, int active, int page, int k);
- //book* delete_el(book * beg, int num_del);
- void cls();
- void gotoxy(int xpos, int ypos);
- void print(const book& s);
- void prosmotr(book* beg);
- void old_book(book beg);
- void sort_cost(book** beg);
- void sort_data(book* beg);
- void searchname(book* beg);
- void searchautor(book* beg);
- void searchjanr(book* beg);
- wchar_t* UnicodeString(string input);
- int change(book* beg, string& user_autor, string& new_user_autor);
- int read_file(string filename, book** beg, book** end);
- int write_file(string filename, book* temp);
- int write_file_binary(string filename, book* beg);
- int read_file_binary(string filename, book** beg, book** end);
- int menu(int& active, const string items[], int num_el);
- void SetColor(int text, int bg);
- //===========основная программа===================================================
- int main()
- {
- // меняем размер шрифта
- CONSOLE_FONT_INFOEX cfi;
- cfi.cbSize = sizeof(cfi);
- cfi.nFont = 0;
- cfi.dwFontSize.X = 0; // Width of each character in the font
- cfi.dwFontSize.Y = 24; // Height
- cfi.FontFamily = FF_DONTCARE;
- cfi.FontWeight = FW_NORMAL;
- SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);
- //----------------------------------
- HANDLE hCon;
- // вытаскиваем ширину и высоту
- hCon = GetStdHandle(-12);
- CONSOLE_SCREEN_BUFFER_INFO consoleInfo;
- if (GetConsoleScreenBufferInfo(hCon, &consoleInfo))
- {
- width = consoleInfo.srWindow.Right - consoleInfo.srWindow.Left + 1;
- height = consoleInfo.srWindow.Bottom - consoleInfo.srWindow.Top + 1;
- }
- //======================================================================
- system("cls");
- ShowWindow(GetConsoleWindow(), SW_MAXIMIZE); // полноэкранный режим
- setlocale(LC_ALL, "Rus");
- system("color 8F");
- book* beg = NULL,
- * end = NULL, input;
- string filename;
- int Num, current = 1;
- string user_autor, new_user_autor;
- int num_e = 0;
- while (1) {
- system("cls");
- switch (menu(current, items, 9))
- {
- case 1://создание списка или добовление нового эл-та в список
- system("cls");
- if (beg)
- end = dob(end, vvod_book());
- else
- {
- beg = dob_first(vvod_book());
- end = beg;
- }
- kol_el++;
- break;
- case 2://удаление всех элементов в списке
- system("cls");
- beg = udal(beg);//(beg,num_del);
- cout << "Нажмите любую клавишу" << endl;
- cin.get();
- break;
- case 3://просмотр
- system("cls");
- //prosmotr(beg);
- list(beg, 0, 0, 0);
- break;
- case 4://запись в файл
- {
- system("cls");
- int current = 1;
- cout << "Выберите формат файла в который хотите записать:";
- switch (menu(current, items3, 3))
- {
- case 1://Запись в текстовый файл
- system("cls");
- write_file(filename, beg);
- break;
- case 2://Запись в бинарный файл
- write_file_binary(filename, beg);
- cin.get();
- break;
- case 27:break;
- }
- }
- break;
- case 5://чтение из файла
- {
- system("cls");
- int current = 1;
- cout << "Выберите формат файла в который хотите записать:";
- switch (menu(current, items4, 3))
- {
- case 1://чтение из текстового файла
- system("cls");
- read_file(filename, &beg, &end);
- break;
- case 2://чтение из бинарного файла
- read_file_binary(filename, &beg, &end);
- cin.get();
- break;
- case 27:break;
- }
- }
- break;
- case 6://редактирование списка
- system("cls");
- cout << "Введите автора, которого вы хотите изменить " << endl;
- cin >> user_autor;
- cout << "Введите нового атвора: " << endl;
- cin >> new_user_autor;
- Num = change(beg, user_autor, new_user_autor);
- if (Num == 1) cout << "Автор успешно перезаписан." << endl;
- else cout << "Автор не найден!" << endl;
- system("pause");
- change(beg, user_autor, new_user_autor);
- cin.get();
- break;
- case 7://поиск
- {
- system("cls");
- int current = 1;
- switch (menu(current, items2, 4))
- {
- case 1://поск по автору
- system("cls");
- searchautor(beg);
- cin.get();
- break;
- case 2:
- system("cls");
- searchname(beg);//поиск по названию книги
- cin.get();
- break;
- case 3:
- searchjanr(beg);
- break;
- case 27:break;
- }
- break;
- }
- case 8://старые книги
- if (!beg)
- {
- MessageBox(0, L"Список пуст", L"Уведомление", MB_ICONINFORMATION | MB_SETFOREGROUND);
- break;
- }
- old_book(*beg);
- break;
- case 9: return 0;
- }
- }
- return 0;
- }
- //-----------------------------------------------------------------------------
- int change(book * beg, string & user_autor, string & new_user_autor)
- {
- book* temp = beg;
- while (temp != NULL)
- {
- if (temp->inf.autor == user_autor)
- {
- temp->inf.autor = new_user_autor;
- return 1;
- }
- else
- {
- temp = temp->next;
- }
- }
- return 0;
- }
- //------------------------------------------------------------------------------
- void searchjanr(book * beg)
- {
- book* temp = beg;
- char fname[d_n];
- int fl = 0;
- system("cls");
- if (!beg)
- {
- MessageBox(0, L"Список пуст", L"Уведомление", MB_ICONINFORMATION | MB_SETFOREGROUND);
- return;
- }
- cout << "Введите название жанра для поиска" << endl;
- cin >> fname;
- cout << "+———————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+" << endl;
- cout << "| Автор | Название | Издательство | Жанр | Дата поступления | Стоимость |" << endl;
- cout << "+———————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+" << endl;
- while (temp)
- {
- if (fname == temp->inf.janr)
- {
- print(*temp);
- fl = 1;
- }
- temp = temp->next;
- }
- if (fl != 1)
- {
- cout << "Книги с таким жанром не найдено" << endl;
- }
- system("pause");
- }
- //------------------------------------------------------------------------------
- void searchname(book * beg)
- {
- book* temp = beg;
- char fname[d_n];
- int fl = 0;
- system("cls");
- if (!beg)
- {
- MessageBox(0, L"Список пуст", L"Уведомление", MB_ICONINFORMATION | MB_SETFOREGROUND);
- return;
- }
- cout << "Введите название книги для поиска" << endl;
- cin >> fname;
- cout << "+———————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+" << endl;
- cout << "| Автор | Название | Издательство | Жанр | Дата поступления | Стоимость |" << endl;
- cout << "+———————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+" << endl;
- while (temp)
- {
- if (fname == temp->inf.name)
- {
- print(*temp);
- fl = 1;
- }
- temp = temp->next;
- }
- if (fl != 1)
- {
- cout << "Книги с таким названием не найдено" << endl;
- }
- system("pause");
- }
- //-----------------------------------------------------------------------------
- void searchautor(book * beg)
- {
- book* temp = beg;
- int fl = 0;
- char fa[d_n];
- system("cls");
- if (!beg)
- {
- MessageBox(0, L"Список пуст", L"Уведомление", MB_ICONINFORMATION | MB_SETFOREGROUND);
- return;
- }
- cout << "Введите автора для поиска" << endl;
- cin >> fa;
- cout << "+———————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+" << endl;
- cout << "| Автор | Название | Издательство | Жанр | Дата поступления | Стоимость |" << endl;
- cout << "+———————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+" << endl;
- while (temp)
- {
- if (fa == temp->inf.autor)
- {
- print(*temp);
- fl = 1;
- }
- temp = temp->next;
- }
- if (fl != 1) {
- cout << "Книги с таким автором не найдено" << endl;
- }
- system("pause");
- }
- //-----------------------------------------------------------------------------
- void old_book(book beg)
- {
- book* temp = &beg;
- sort_data(&beg);
- system("cls");
- cout << "+———————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+" << endl;
- cout << "| Автор | Название | Издательство | Жанр | Дата поступления | Стоимость |" << endl;
- cout << "+———————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+" << endl;
- for (int i = 0; i < 5; i++) {
- print(*temp);
- temp = temp->next;
- }
- system("pause");
- return;
- cout << "+———————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+" << endl;
- cin.get();
- }
- //-----------------------------------------------------------------------------
- void prosmotr(book * beg)
- {
- int k = 1;
- if (!beg)
- {
- cout << "список пустой" << endl;
- cin.get();
- return;
- }
- book* temp = beg;
- cout << "+—|—————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+" << endl;
- cout << "|№| Автор | Название | Издательство | Жанр | Дата поступления | Стоимость |" << endl;
- cout << "+—|—————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+" << endl;
- while (temp)
- {
- cout << "|" << k++ << "|";
- print(*temp);
- temp = temp->next;
- }
- cout << "+———————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+" << endl;
- cin.get();
- }
- //-----------------------------------------------------------------------------
- book vvod_book()
- {
- book s;
- cout << "Введите автора:" << endl;
- while (1)
- {
- cin >> s.inf.autor;
- //if (atoi(s.autor)==0)
- if ((s.inf.autor[0] >= '0') && (s.inf.autor[0] <= '9'))
- break;
- cout << "Ошибка ввода!" << endl;
- }
- cout << "Введите название книги:" << endl;
- while (1)
- {
- cin >> s.inf.name;
- //if (atoi(s.name)==0)
- break;
- cout << "Ошибка ввода!" << endl;
- }
- cout << "Введите издательство:" << endl;
- while (1)
- {
- cin >> s.inf.izdatelstvo;
- //if (atoi(s.izdatelstvo) == 0)
- break;
- cout << "Ошибка ввода!" << endl;
- }
- cout << "Введите жанр:" << endl;
- while (1)
- {
- cin >> s.inf.janr;
- //if (atoi(s.janr) == 0)
- break;
- cout << "Ошибка ввода!" << endl;
- }
- cout << "Введите дату поступления:" << endl;
- cout << "Введите день:";
- while (1)
- {
- cin >> s.inf.d;
- if ((s.inf.d >= 1) && (s.inf.d <= 31))
- break;
- cout << "Ошибка ввода!Ведите правильную дату!" << endl;
- }
- cout << "Введите месяц:";
- while (1)
- {
- cin >> s.inf.m;
- if ((s.inf.m >= 1) && (s.inf.m <= 12))
- break;
- cout << "Ошибка ввода!Ведите правильную дату!" << endl;
- }
- cout << "Введите год:";
- while (1)
- {
- cin >> s.inf.g;
- if ((s.inf.g >= 1900) && (s.inf.g <= 2050))
- break;
- cout << "Ошибка ввода!Ведите правильную дату!" << endl;
- }
- cout << "Введите стоимость книги:" << endl;
- cin >> s.inf.cost;
- kol_el++;
- return s;
- }
- //-----------------------------------------------------------------------------
- void print(const book & s)
- {
- cout << s.inf.autor << setw(18 - (s.inf.autor).length()) << "|";
- cout << s.inf.name << setw(21 - (s.inf.name).length()) << "|";
- cout << s.inf.izdatelstvo << setw(19 - (s.inf.izdatelstvo).length()) << "|";
- cout << s.inf.janr << setw(17 - (s.inf.janr).length()) << "|";
- if (s.inf.d < 10) {
- cout << 0 << s.inf.d << ".";
- }
- else {
- cout << s.inf.d << ".";
- }
- if (s.inf.m < 10) {
- cout << 0 << s.inf.m << ".";
- }
- else {
- cout << s.inf.m << ".";
- }
- cout << s.inf.g << setw(9) << "|";
- cout << s.inf.cost << setw(16 - (s.inf.cost).length()) << "|" << endl;
- }
- //--------------ф-я добавления или создания эл-та-------------------------------
- book * dob(book * end, const book & s)
- {
- book* newE = new book;
- *newE = s;
- newE->next = 0;
- newE->pred = end;
- end->next = newE;
- end = newE;
- return end;
- }
- //--------------создание первого эл-та------------------------------
- book* dob_first(const book & s)
- {
- book* beg = new book;
- *beg = s;
- beg->next = 0;
- beg->pred = 0;
- return beg;
- }
- //-----------------------------------------------------------------------------
- int read_file(string filename, book * *beg, book * *end)
- {
- cout << "Введите название файла" << endl;
- cin >> filename;
- ifstream fin(filename, ios::in);
- if (!fin) {
- MessageBox(0, L"Невозможно открыть файл!", L"Ошибка", MB_ICONERROR | MB_SETFOREGROUND);
- return 0;
- }
- book s;
- *beg = 0;
- fin.seekg(0, ios::beg);
- while (fin >> s.inf.autor)
- {
- fin >> s.inf.name;
- fin >> s.inf.izdatelstvo;
- fin >> s.inf.janr;
- fin >> s.inf.d;
- fin >> s.inf.m;
- fin >> s.inf.g;
- fin >> s.inf.cost;
- if (*beg) {
- *end = dob(*end, s);
- } else {
- *beg = dob_first(s); *end = *beg;
- }
- kol_el++;
- }
- cout << "Считывание прошло успешно" << endl;
- cin.get();
- cin.get();
- return 0;
- }
- //-----------------------------------------------------------------------------
- int write_file(string filename, book * temp)
- {
- cout << "Введите название файла" << endl;
- cin >> filename;
- ofstream fout(filename, ios_base::app); // открытие файла
- if (!fout)
- {
- cout << "Не могу открыть файл для записи" << endl;
- return 1;
- }
- while (temp)// пока temp!=0 выводим эл-ты в файл
- {
- fout << temp->inf.autor << endl;
- fout << temp->inf.name << endl;
- fout << temp->inf.izdatelstvo << endl;
- fout << temp->inf.janr << endl;
- fout << temp->inf.d << endl;
- fout << temp->inf.m << endl;
- fout << temp->inf.g << endl;
- fout << temp->inf.cost << endl;
- temp = temp->next;
- }
- cout << "Данные сохранены в файле: " << filename << endl;
- cout << "==============================" << endl;
- cout << "Нажмите любую клавишу" << endl;
- cin.get();
- return 0;
- }
- //-----------------------------------------------------------------------------
- int write_file_binary(string filename, book * beg)
- {
- cout << "Введите название файла" << endl;
- cin >> filename;
- book* temp = beg;
- ofstream fout(filename + ".dat", ios::binary); // открытие файла
- if (!fout)
- {
- cout << "Не могу открыть файл для записи" << endl;
- return 1;
- }
- while (temp) {
- fout.write((char*)& temp->inf, sizeof temp->inf);
- temp = temp->next;
- }
- fout.close();
- cout << "Данные сохранены в файле: " << filename << endl;
- cout << "==============================" << endl;
- cout << "Нажмите любую клавишу" << endl;
- cin.get();
- return 0;
- }
- // ==========ЧТЕНИЕ ИЗ БИНАРНОГО ФАЙЛА==========
- int read_file_binary(string filename, book * *beg, book * *end)
- {
- cout << "Введите название файла" << endl;
- cin >> filename;
- ifstream fin(filename + ".dat", ios::binary);
- if (!fin) {
- MessageBox(0, L"Нет файла!", L"Ошибка", MB_ICONERROR | MB_SETFOREGROUND);
- return 1;
- }
- fin.seekg(ios_base::beg);
- book* t = new book;
- t->next = NULL;
- t->pred = NULL;
- *beg = 0;
- while (fin.read((char*)& t->inf, sizeof t->inf))
- {
- if (*beg)
- * end = dob(*end, *t);
- else {
- *beg = dob_first(*t);
- *end = *beg;
- }
- }
- fin.close();
- cout << "Чтене прошло успешно" << endl;
- cout << "==============================" << endl;
- cout << "Нажмите любую клавишу" << endl;
- return 0;
- }
- //-----------------------------------------------------------------------------
- book* udal(book * beg)
- {
- book* temp;
- if (!beg)
- {
- cout << "список пустой" << endl;
- cin.get();
- return 0;
- }
- while (beg)
- {
- temp = beg;
- beg = beg->next;
- delete temp;
- }
- cout << "==============================" << endl;
- cout << "====удаление прошло успешно===" << endl;
- cout << "==============================" << endl;
- return beg;
- }
- //----------------------------------------------------------------
- void sort_data(book * beg)
- {
- book* temp_i = beg, * temp_j = beg;
- for (; temp_i; temp_i = temp_i->next)
- {
- for (temp_j = temp_i; temp_j; temp_j = temp_j->next)
- {
- if (temp_i->inf.g != temp_j->inf.g)
- {
- if (temp_i->inf.g > temp_j->inf.g)
- {
- swap(temp_i->inf, temp_j->inf);
- continue;
- }
- }
- else if (temp_i->inf.m != temp_j->inf.m)
- {
- if (temp_i->inf.m > temp_j->inf.m)
- {
- swap(temp_i->inf, temp_j->inf);
- continue;
- }
- }
- else if (temp_i->inf.d > temp_j->inf.d)
- {
- swap(temp_i->inf, temp_j->inf);
- continue;
- }
- }
- }
- cout << "Сортировка прошла успешно" << endl;
- system("pause");
- }
- //----------------------------------------
- void sort_cost(book * *beg) {
- book* temp_i = *beg,
- * temp_j = *beg;
- for (; temp_i; temp_i = temp_i->next) {
- for (temp_j = temp_i; temp_j; temp_j = temp_j->next) {
- if (stoi(temp_i->inf.cost) > stoi(temp_j->inf.cost)) {
- swap(temp_i->inf, temp_j->inf);
- }
- }
- }
- cout << "Сортировка прошла успешно" << endl;
- system("pause");
- }
- // ==========ШАБЛОН ПЕЧАТИ МЕНЮ==========
- void print_menu(int sym, const string items[], const int N_ITEMS)
- {
- for (int i = 1; i <= N_ITEMS; i++)
- {
- SetColor(15, 8);
- gotoxy((width / 2) - 10, (height / 2) + i - 3); // ставим меню в центр
- if (i == sym)
- {
- SetColor(16, 3);
- }
- cout << items[i - 1] << endl;
- SetColor(15, 8);
- }
- }
- // ==========МЕНЮ==========
- int menu(int& active, const string items[], int num_el)
- {
- wint_t buf;
- while (1)
- {
- cls();
- print_menu(active, items, num_el);
- buf = _getwch();
- switch (buf)
- {
- case up: // клавиша вверх
- if (active > 1) active--;
- break;
- case down: // клавиша вниз
- if (active < num_el) active++;
- break;
- case enter: // клавиша enter
- return active;
- case esc: // клавиша escape
- return -1;
- }
- }
- }
- // ==========УСТАНОВКА ЦВЕТА ТЕКСТА И ФОНА==========
- void SetColor(int text, int bg)
- {
- HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
- SetConsoleTextAttribute(hStdOut, (WORD)((bg << 4) | text));
- }
- // ==========ПЕРЕМЕЩЕНИЕ КУРСОРА НА ВЫБРАННУЮ ПОЗИЦИЮ==========
- void gotoxy(int xpos, int ypos)
- {
- COORD scrn;
- HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);
- scrn.X = xpos; scrn.Y = ypos;
- SetConsoleCursorPosition(hOuput, scrn);
- }
- //=====================================
- wchar_t* UnicodeString(string input) {
- const char* orig = input.c_str();
- size_t origsize = strlen(orig) + 1;
- const size_t newsize = 100;
- size_t convertedChars = 0;
- wchar_t* wcstring = new wchar_t[newsize];
- mbstowcs_s(&convertedChars, wcstring, origsize, orig, _TRUNCATE);
- return wcstring;
- }
- // ==========ОЧИСТКА ЭКРАНА БЕЗ МЕРЦАНИЯ==========
- void cls() {
- HANDLE hd = GetStdHandle(STD_OUTPUT_HANDLE);
- COORD cd;
- cd.X = 0;
- cd.Y = 0;
- SetConsoleCursorPosition(hd, cd);
- }
- /*// ==========УДАЛЕНИЕ==========
- book* delete_el(book* beg,int k)
- {
- book* temp;
- book* buf;
- int c=1;
- if (!beg) {
- MessageBox(0, L"Список пуст", L"Уведомление", MB_ICONINFORMATION | MB_SETFOREGROUND);
- return 0;
- }
- temp = beg;
- // если один элемент в списке
- if (beg->next == 0) {
- delete temp;
- return 0;
- }
- while (temp) {
- if (num_del == stoi(temp->inf.autor)) { // если введённый номер совпал с шифром задания
- buf = temp->next;
- // если удаляется второй элемент
- if (temp->pred == 0) {
- buf->pred = 0;
- delete temp;
- return buf;
- }
- if (buf != 0) buf->pred = temp->pred; // если следующий элемент не 0
- buf = temp->pred;
- buf->next = temp->next;
- delete temp;
- return beg;
- }
- temp = temp->next;
- }
- MessageBox(0, L"Произошла ошибка!", L"Ошибка", MB_ICONERROR | MB_SETFOREGROUND);
- return beg;
- }*/
- book* list(book * beg, int active, int page, int k)
- {
- book* temp = beg,
- *buf_temp = beg,
- *buf_el = beg;
- int c = 0,
- key = 0,
- first_page = 2; // переменная для первой страницы, если это первая страница, тогда 1, в остальных случаях = 2
- k = 1;
- page = 1;
- active = 1;
- while (1)
- {
- if (!beg)
- {
- MessageBox(0, L"Список пуст", L"Уведомление", MB_ICONINFORMATION | MB_SETFOREGROUND);
- return beg;
- }
- if (k != kol_el + 1 && first_page != 1)
- {
- cout << "+—|—————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+" << endl;
- cout << "|№| Автор | Название | Издательство | Жанр | Дата поступления | Стоимость |" << endl;
- cout << "+—|—————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+" << endl;
- do {
- // находим первый элемент с предыдущей страницы
- if (k % 5 == 0 && page != 1) {
- buf_el = temp;
- for (int j = 0; j < 4; j++, temp = temp->pred) {
- buf_temp = temp->pred;
- }
- temp = buf_el;
- }
- cout << "|" << k++ << "|";
- print(*temp);
- temp = temp->next;
- } while (temp && k % 5 != 0);
- cout << "+———————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+" << endl;
- }
- c = _getwch();
- key = _getwch();
- switch (key) {
- case right_btn:
- first_page = 2;
- if (k != kol_el + 1) {
- page++;
- system("cls");
- }
- break;
- case left_btn:
- if (page != 1) {
- system("cls");
- k -= 8;
- page--;
- temp = buf_temp;
- } else first_page = 1;
- break;
- case esc:
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement