Neon_Falcon

Стек с недоделанным меню

Jun 12th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.13 KB | None | 0 0
  1. // СТЕК
  2. using namespace std;
  3. #include <iostream>
  4. #include <iomanip>
  5. #include <string>
  6. #include <Windows.h>
  7. int const width = 100; // ширина
  8. int const countOfStolb = 4; //кол-во столбов
  9.  
  10. struct Comp { // создаем структуру
  11. string avtor;
  12. string nazvanie;
  13. int year;
  14. int price;
  15. Comp* next; // ссылка на пред.элемент
  16. Comp* head; //ссылка на голову
  17. };
  18.  
  19. void Add(Comp* steck) { // метод добавления в стек
  20. Comp* tmp = new Comp; // ссылка на структуру и выделение память на нее
  21. cout << "Введите автора: ";
  22. cin >> tmp->avtor;
  23. cout << "Введите название картины: ";
  24. cin >> tmp->nazvanie;
  25. cout << "Введите год написания: ";
  26. cin >> tmp->year;
  27. cout << "Введите сумму страховки: ";
  28. cin >> tmp->price;
  29. tmp->next = steck->head;
  30. steck->head = tmp;
  31. }
  32.  
  33. Comp ReturnHead(Comp* steck) { // возвращение головного элемента стека
  34. return *steck->head;
  35. }
  36.  
  37. void Show(Comp* steck) { // показ по правилу LIFO
  38. Comp* tmp = steck->head;
  39. while (tmp != NULL) {
  40. cout << "|" << setw(width / countOfStolb) << tmp->avtor << "|" << setw(width / countOfStolb) << tmp->nazvanie << "|" << setw(width / countOfStolb) << tmp->year << "|"
  41. << setw(width / countOfStolb) << tmp->price << "|\n";
  42. for (int j = 0; j < width; j++) {
  43. cout << "-";
  44. }
  45. cout << "\n";
  46. tmp = tmp->next; // переход на предыдущего
  47. }
  48. }
  49.  
  50. void PrintHead(Comp* steck) { // вывод головы
  51. Comp* tmp = steck->head;
  52. cout << "|" << setw(width / countOfStolb) << tmp->avtor << "|" << setw(width / countOfStolb) << tmp->nazvanie << "|" << setw(width / countOfStolb) << tmp->year << "|"
  53. << setw(width / countOfStolb) << tmp->price << "|\n";
  54. for (int j = 0; j < width; j++)
  55. cout << "-";
  56. cout << "\n";
  57. }
  58.  
  59. void PrintTable() { // вывод границ таблицы
  60. cout << "|" << setw(width / 2) << "Картинная галерея" << setw(width / 2) << "|\n";
  61. for (int i = 0; i < width; i++) {
  62. cout << "-";
  63. }
  64. cout << "\n";
  65. cout << "|" << setw(width / countOfStolb) << "Автор |" << setw(width / countOfStolb) << "Название картины |" << setw(width / countOfStolb) << "Год написания|" << setw(width / countOfStolb)
  66. << "Сумма страховки, руб |\n";
  67. for (int j = 0; j < width; j++) {
  68. cout << "-";
  69. }
  70. }
  71.  
  72. void DeleteHead(Comp * steck) { // удаление головы
  73. Comp* tmp = steck->head->next;
  74. delete steck->head;
  75. steck->head = tmp;
  76. }
  77.  
  78. void ClearSteck(Comp * steck) { // чистка стека
  79. while (steck->head != NULL) {
  80. Comp* tmp = steck->head->next;
  81. delete steck->head;
  82. steck->head = tmp;
  83. }
  84. }
  85.  
  86. int menu()
  87. {
  88. int a;
  89. cout << "Если вы хотите добавишь элемент нажмите 1\n";
  90. cout << "Если вы хотите удалить голову нажмите 2 \n";
  91. cout << "Если вы хотите узнать голову нажмите 3 \n";
  92. cout << "Если вы хотите вывести таблицу нажмите 4 \n";
  93. cout << "Если вы хотите уничтожить стек нажмите 5 \n";
  94. cout << "Если вы хотите закончить работу нажмите 0 \n";
  95. cin >> a;
  96. return a;
  97. }
  98. int main() {
  99. int otvet;
  100. SetConsoleCP(1251);
  101. SetConsoleOutputCP(1251);
  102. Comp* steck = new Comp;
  103. steck->head = NULL;
  104. otvet = menu();
  105. if(otvet != 0)
  106. {
  107. if (otvet == 1)
  108. {
  109. Add(steck);
  110. cout << "\n";
  111. }
  112. if (otvet == 2)
  113. {
  114. DeleteHead(steck);
  115. cout << "\n";
  116. }
  117. if (otvet == 3);
  118. {
  119. PrintHead(steck);
  120. cout << "\n";
  121. }
  122. if (otvet == 4);
  123. {
  124. PrintTable();
  125. cout << "\n";
  126. Show(steck);
  127. cout << "\n";
  128. }
  129. if (otvet == 5)
  130. {
  131. ClearSteck(steck);
  132. delete steck->head; // удаление указателя на голову
  133. delete steck; // удаление указателя на стек
  134. }
  135. menu();
  136. }
  137. system("pause");
  138. return 0;
  139. }
Advertisement
Add Comment
Please, Sign In to add comment