Advertisement
Gologo

laba 5

May 20th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <checkValid.h>
  4. #include <windows.h>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. struct st{
  10.     int num;
  11.     st* next;
  12. };
  13.  
  14. void s_push(st* top, int in);
  15. void s_del(st* top);
  16. void s_print(st* top);
  17. void initStack(st* first,int num);
  18.  
  19. void arr_push(int* arr,int in,int counter);
  20.  
  21. void addCell(int* arr,int counter);
  22.  
  23. void arr_print(int* arr,int counter);
  24. void arr_del(int* arr,int counter);
  25.  
  26. void l_push(st* first,int num);
  27. void initLine(st* first,int num);
  28. void l_print(st* first);
  29. void l_del(st* first);
  30.  
  31. void al_push(int* arr,int in,int counter);
  32. void al_print(int* arr, int counter);
  33. void al_del(int* arr,int counter);
  34.  
  35. int menu();
  36. int menu2();
  37.  
  38.  
  39. bool stackFlag = false;
  40. bool lineFlag = false;
  41.  
  42.  
  43. int main()
  44. {
  45.     SetConsoleCP(1251);
  46.     SetConsoleOutputCP(1251);
  47.  
  48.     int scounter = 5;
  49.     int lcounter = 5;
  50.  
  51.     st* stack = new st;
  52.     st* line = new st;
  53.     int* arrSt = new int[scounter];
  54.     int* arrL = new int[lcounter];
  55.  
  56.     for(int i =0;i<scounter;i++){
  57.         arrSt[i] = 0;
  58.     }
  59.  
  60.     for(int i =0;i<lcounter;i++){
  61.         arrL[i] = 0;
  62.     }
  63.  
  64.     int i;
  65.     st* q;
  66.     bool iterator_flag = true;
  67.  
  68.     while(true){
  69.         switch(menu()){
  70.             case 1:
  71.                 while(iterator_flag){
  72.                     switch(menu2()){
  73.                         case 1:
  74.                             cout << "Введите значение : ";
  75.                             cin >> i;
  76.                             arr_push(arrSt,i,scounter);
  77.                         break;
  78.  
  79.                         case 2:
  80.                             arr_del(arrSt,scounter);
  81.                             cout << "Удалено\n";
  82.                         break;
  83.  
  84.                         case 3:
  85.                             arr_print(arrSt,scounter);
  86.                             cout << "\n";
  87.                         break;
  88.  
  89.                         case 4:
  90.                             cout << arrSt[0] << "\n";
  91.                         break;
  92.  
  93.                         case 5:
  94.                             for(int p = 0;p<scounter;p++){
  95.                                 arrSt[p] = 0;
  96.                             }
  97.                             cout << "Очишенно\n";
  98.                         break;
  99.  
  100.                         case 6:
  101.                             cout << "Проверенно";
  102.                         break;
  103.  
  104.                         case 7:
  105.                             iterator_flag = false;
  106.                         break;
  107.                     }
  108.                 }
  109.                 break;
  110.  
  111.                 case 2:
  112.                 while(iterator_flag){
  113.                     switch(menu2()){
  114.                         case 1:
  115.                             cout << "Введите значение : ";
  116.                             cin >> i;
  117.                             s_push(stack,i);
  118.                         break;
  119.  
  120.                         case 2:
  121.                             s_del(stack);
  122.                             cout << "Удалено\n";
  123.                         break;
  124.  
  125.                         case 3:
  126.                             s_print(stack);
  127.                             cout << "\n";
  128.                         break;
  129.  
  130.                         case 4:
  131.                             cout << stack->num;
  132.                         break;
  133.  
  134.                         case 5:
  135.                             while(stack != NULL){
  136.                                 q = stack->next;
  137.                                 stack = NULL;
  138.                                 stack = q;
  139.                             }
  140.                             cout << "Очишенно\n";
  141.                         break;
  142.  
  143.                         case 6:
  144.                             cout << "Проверенно";
  145.                         break;
  146.  
  147.                         case 7:
  148.                             iterator_flag = false;
  149.                         break;
  150.                     }
  151.                 }
  152.                 break;
  153.  
  154.                 case 3:
  155.                 while(iterator_flag){
  156.                     switch(menu2()){
  157.                         case 1:
  158.                             cout << "Введите значение : ";
  159.                             cin >> i;
  160.                             al_push(arrL,i,lcounter);
  161.                         break;
  162.  
  163.                         case 2:
  164.                             al_del(arrL,lcounter);
  165.                             cout << "Удалено\n";
  166.                         break;
  167.  
  168.                         case 3:
  169.                             al_print(arrL,lcounter);
  170.                         break;
  171.  
  172.                         case 4:
  173.                             cout << arrL[0];
  174.                         break;
  175.  
  176.                         case 5:
  177.                             for(int p = 0;p<lcounter;p++){
  178.                                 arrL[p] = 0;
  179.                             }
  180.                             cout << "Очишенно\n";
  181.                         break;
  182.  
  183.                         case 6:
  184.                             cout << "Проверенно";
  185.                         break;
  186.  
  187.                         case 7:
  188.                             iterator_flag = false;
  189.                         break;
  190.                     }
  191.                 }
  192.                 break;
  193.  
  194.                 case 4:
  195.                 while(iterator_flag){
  196.                     switch(menu2()){
  197.                         case 1:
  198.                             cout << "Введите значение : ";
  199.                             cin >> i;
  200.                             l_push(line,i);
  201.                         break;
  202.  
  203.                         case 2:
  204.                             l_del(line);
  205.                             cout << "Удалено\n";
  206.                         break;
  207.  
  208.                         case 3:
  209.                             l_print(line);
  210.                         break;
  211.  
  212.                         case 4:
  213.                             cout << line->num;
  214.                         break;
  215.  
  216.                         case 5:
  217.                             while(line != NULL){
  218.                                 q = line->next;
  219.                                 line = NULL;
  220.                                 line = q;
  221.                             }
  222.                             cout << "Очишенно\n";
  223.                         break;
  224.  
  225.                         case 6:
  226.                             cout << "Проверенно";
  227.                         break;
  228.  
  229.                         case 7:
  230.                             iterator_flag = false;
  231.                         break;
  232.                     }
  233.                 }
  234.                 break;
  235.  
  236.                 case 5:
  237.                     return 0;
  238.                 break;
  239.  
  240.         }
  241.     }
  242.  
  243. }
  244.  
  245. void s_push(st* top, int in){
  246.     if(stackFlag == false){
  247.         initStack(top,in);
  248.     }else{
  249.     st* q = new st;
  250.     q->num = top->num;
  251.     q->next = top->next;
  252.     top->next = q;
  253.     top->num = in;
  254.     }
  255. }
  256.  
  257. void s_del(st* top){
  258.     if(top->next == NULL){
  259.         top ->num = NULL;
  260.         stackFlag = false;
  261.     }else{
  262.         st* q = top->next;
  263.         top->num = q->num;
  264.         top->next = q->next;
  265.     }
  266. }
  267.  
  268. void s_print(st* top){
  269.     st* q = top;
  270.  
  271.     do{
  272.         cout << q->num << " ";
  273.         q = q->next;
  274.     }while(q != NULL);
  275. }
  276.  
  277. void initStack(st* top,int num){
  278.     top->num = num;
  279.     top->next = NULL;
  280.     stackFlag = true;
  281. }
  282.  
  283. void arr_push(int* arr,int in,int counter){
  284.     bool overflow_flag = true;
  285.     for(int i = counter;i>=0;i--){
  286.         if(arr[i] == 0){
  287.             arr[i] = in;
  288.             overflow_flag = false;
  289.             break;
  290.         }
  291.     }
  292.  
  293.     if(overflow_flag == true){
  294.         addCell(arr,counter);
  295.         arr[4] = in;
  296.     }
  297. }
  298.  
  299. void addCell(int* arr,int counter){
  300.     int* tmp = new int[counter+5];
  301.  
  302.     for(int i = 0;i<counter+5;i++){
  303.         tmp[i] = 0;
  304.     }
  305.  
  306.     for(int i = 0;i<counter;i++){
  307.         tmp[i+5] = arr[i];
  308.     }
  309.     delete [] arr;
  310.     arr = tmp;
  311.     counter+=5;
  312. }
  313.  
  314. void arr_print(int* arr,int counter){
  315.     cout << "\n";
  316.     for(int i = 0;i<counter;i++){
  317.         cout << arr[i] << " ";
  318.     }
  319. }
  320.  
  321. void arr_del(int* arr,int counter){
  322.     for(int i = 0;i<counter;i++){
  323.         if(arr[i]!=0){
  324.             arr[i] = 0;
  325.             break;
  326.         }
  327.     }
  328. }
  329.  
  330.  
  331. void l_push(st* first,int num){
  332.     if(lineFlag == false){
  333.         initLine(first,num);
  334.     }else{
  335.         st* q = new st;
  336.         st* p = first;
  337.  
  338.         while(p->next != NULL){
  339.             p = p->next;
  340.         }
  341.  
  342.         p->next = q;
  343.         q->num = num;
  344.         q->next = NULL;
  345.     }
  346. }
  347.  
  348. void initLine(st* first,int num){
  349.     first->num = num;
  350.     first->next = NULL;
  351.     lineFlag = true;
  352. }
  353.  
  354. void l_print(st* first){
  355.     st* p = first;
  356.     while(p != NULL){
  357.         cout << p->num << " ";
  358.         p = p->next;
  359.     }
  360. }
  361.  
  362. void l_del(st* first){
  363.     st* q = first->next;
  364.  
  365.     delete first;
  366.  
  367.     first = q;
  368. }
  369.  
  370. void al_push(int* arr,int in,int counter){
  371.     bool overflow_flag = true;
  372.     for(int i = 0;i<counter;i++){
  373.         if(arr[i] == 0){
  374.             arr[i] = in;
  375.             overflow_flag = false;
  376.             break;
  377.         }
  378.  
  379.         if(overflow_flag == true){
  380.             addCell(arr,counter);
  381.             arr[counter+5] = in;
  382.         }
  383.     }
  384. }
  385.  
  386. void al_print(int* arr, int counter){
  387.     for(int i = 0;i<counter;i++){
  388.         cout << arr[i] << " ";
  389.     }
  390. }
  391.  
  392. void al_del(int* arr,int counter){
  393.     for(int i = 0;i<counter-1;i++){
  394.         arr[i] = arr[i+1];
  395.     }
  396. }
  397.  
  398. int menu(){
  399.     int read;
  400.  
  401.     cout << "1 Стек через массив\n";
  402.     cout << "2 Стек через список\n";
  403.     cout << "3 Очередь через массив\n";
  404.     cout << "4 Очередь через список\n";
  405.     cout << "5 Выход\n";
  406.  
  407.     while(checkValid() == false){}
  408.     read = temp;
  409.  
  410.     return read;
  411. }
  412.  
  413. int menu2(){
  414.     int read;
  415.  
  416.     cout << "1 Вставить\n";
  417.     cout << "2 Удалить\n";
  418.     cout << "3 Печать\n";
  419.     cout << "4 Показать верхний\n";
  420.     cout << "5 Очистка\n";
  421.     cout << "6 Проверить пусто ли \n";
  422.     cout << "7 Назад\n";
  423.  
  424.     while(checkValid() == false){}
  425.     read = temp;
  426.  
  427.     return read;
  428. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement