Advertisement
rado_dimitrov66

Untitled

May 15th, 2024
470
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 17.73 KB | None | 0 0
  1.  
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. struct DoubleListNumber
  6. {
  7.     int valuekey;
  8.     DoubleListNumber* prev;
  9.     DoubleListNumber* next;
  10. } *start = NULL;
  11.  
  12. struct DoubleListNumber2
  13. {
  14.     int valuekey;
  15.     DoubleListNumber2* prev;
  16.     DoubleListNumber2* next;
  17. } *start2 = NULL;
  18.  
  19. struct DoubleListNumber3
  20. {
  21.     int valuekey;
  22.     DoubleListNumber3* prev;
  23.     DoubleListNumber3* next;
  24. } *start3 = NULL;
  25.  
  26. void printAllNumbers(unsigned short choice)
  27. {
  28.     DoubleListNumber* p = start;
  29.     DoubleListNumber2* q = start2;
  30.     DoubleListNumber3* r = start3;
  31.  
  32.  
  33.     switch (choice)
  34.     {
  35.     case 1:
  36.         while (p)
  37.         {
  38.             cout << p->valuekey << " ";
  39.             p = p->next;
  40.         }
  41.         break;
  42.  
  43.     case 2:
  44.         while (q)
  45.         {
  46.             cout << q->valuekey << " ";
  47.             q = q->next;
  48.         }
  49.         break;
  50.  
  51.     case 3:
  52.         while (r)
  53.         {
  54.             cout << r->valuekey << " ";
  55.             r = r->next;
  56.         }
  57.         break;
  58.     default:
  59.         break;
  60.     }
  61.  
  62.     cout << "" << endl;
  63.  
  64. }
  65.  
  66. int addingPosition(int n, unsigned short choice)
  67. {
  68.     DoubleListNumber* p = start;
  69.     DoubleListNumber2* q = start2;
  70.     DoubleListNumber3* r = start3;
  71.  
  72.     int position = 0;
  73.  
  74.     switch (choice)
  75.     {
  76.  
  77.     case 1:
  78.         while (p)
  79.         {
  80.             if (n < p->valuekey)
  81.             {
  82.                 break;
  83.             }
  84.  
  85.             position++;
  86.             p = p->next;
  87.         }
  88.         break;
  89.  
  90.     case 2:
  91.  
  92.         while (q)
  93.         {
  94.             if (n < q->valuekey)
  95.             {
  96.                 break;
  97.             }
  98.  
  99.             position++;
  100.             q = q->next;
  101.         }
  102.         break;
  103.  
  104.  
  105.     case 3:
  106.  
  107.         while (r)
  108.         {
  109.             if (n < r->valuekey)
  110.             {
  111.                 break;
  112.             }
  113.  
  114.             position++;
  115.             r = r->next;
  116.         }
  117.         break;
  118.     }
  119.  
  120.     return position;
  121. }
  122.  
  123.  
  124. void addNumber(int n, short choice, unsigned short& step, unsigned int& countOfNumbers)
  125. {
  126.  
  127.     DoubleListNumber* p = start;
  128.     DoubleListNumber* q;
  129.  
  130.  
  131.     int position = -1;
  132.  
  133.     if (countOfNumbers > 0)
  134.     {
  135.         position = addingPosition(n, 1);
  136.     }
  137.  
  138.     if (choice == 1 && position > 0 && position < countOfNumbers || choice == 2 && position < countOfNumbers && position > 0)
  139.     {
  140.         choice = 3;
  141.  
  142.         step = position;
  143.     }
  144.     else if (choice == 1 && position == countOfNumbers || choice == 2 && position == 0)
  145.     {
  146.         choice = position == countOfNumbers ? 2 : 1;
  147.     }
  148.     else if (choice == 3 && position == 0 || choice == 3 && position == countOfNumbers)
  149.     {
  150.         choice = position == 0 ? 1 : 2;
  151.     }
  152.  
  153.  
  154.     switch (choice)
  155.     {
  156.     case 1:
  157.  
  158.         p = start;
  159.  
  160.         start = new DoubleListNumber;
  161.  
  162.         start->valuekey = n;
  163.         start->prev = NULL;
  164.  
  165.         start->next = p;
  166.  
  167.         if (p)
  168.         {
  169.             p->prev = start;
  170.         }
  171.  
  172.         break;
  173.  
  174.     case 2:
  175.  
  176.         p = start;
  177.  
  178.         q = new DoubleListNumber;
  179.  
  180.         q->valuekey = n;
  181.  
  182.         q->next = NULL;
  183.  
  184.         if (start)
  185.         {
  186.             while (p->next)
  187.             {
  188.                 p = p->next;
  189.             }
  190.  
  191.             p->next = q;
  192.  
  193.             q->prev = p;
  194.  
  195.         }
  196.         else {
  197.             start = q;
  198.         }
  199.  
  200.  
  201.         break;
  202.  
  203.     case 3:
  204.         p = start;
  205.  
  206.         for (int i = countOfNumbers; i >= step; i--)
  207.         {
  208.  
  209.             if (i == countOfNumbers) {
  210.  
  211.                 while (p->next)
  212.                 {
  213.                     p = p->next;
  214.                 }
  215.  
  216.                 q = new DoubleListNumber;
  217.  
  218.                 q->valuekey = p->valuekey;
  219.  
  220.                 q->next = NULL;
  221.  
  222.                 q->prev = p;
  223.  
  224.                 p->next = q;
  225.  
  226.             }
  227.  
  228.             else if (i == step) {
  229.  
  230.  
  231.                 p->valuekey = n;
  232.  
  233.             }
  234.             else {
  235.  
  236.                 p->valuekey = p->prev->valuekey;
  237.  
  238.                 p = p->prev;
  239.  
  240.             }
  241.  
  242.         }
  243.         break;
  244.     default:
  245.         break;
  246.     }
  247.  
  248.     countOfNumbers++;
  249.  
  250.  
  251. }
  252.  
  253. void addNumberToLIst2(int n, short choice, unsigned short& step, unsigned int& countOfNumbers)
  254. {
  255.  
  256.     DoubleListNumber2* p = start2;
  257.     DoubleListNumber2* q;
  258.  
  259.  
  260.     int position = -1;
  261.  
  262.     if (countOfNumbers > 0)
  263.     {
  264.         position = addingPosition(n, 2);
  265.     }
  266.  
  267.     if (choice == 1 && position > 0 && position < countOfNumbers || choice == 2 && position < countOfNumbers && position > 0)
  268.     {
  269.         choice = 3;
  270.  
  271.         step = position;
  272.     }
  273.     else if (choice == 1 && position == countOfNumbers || choice == 2 && position == 0)
  274.     {
  275.         choice = position == countOfNumbers ? 2 : 1;
  276.     }
  277.     else if (choice == 3 && position == 0 || choice == 3 && position == countOfNumbers)
  278.     {
  279.         choice = position == 0 ? 1 : 2;
  280.     }
  281.  
  282.  
  283.     switch (choice)
  284.     {
  285.     case 1:
  286.  
  287.         p = start2;
  288.  
  289.         start2 = new DoubleListNumber2;
  290.  
  291.         start2->valuekey = n;
  292.         start2->prev = NULL;
  293.  
  294.         start2->next = p;
  295.  
  296.         if (p)
  297.         {
  298.             p->prev = start2;
  299.         }
  300.  
  301.         break;
  302.  
  303.     case 2:
  304.  
  305.         p = start2;
  306.  
  307.         q = new DoubleListNumber2;
  308.  
  309.         q->valuekey = n;
  310.  
  311.         q->next = NULL;
  312.  
  313.         if (start2)
  314.         {
  315.             while (p->next)
  316.             {
  317.                 p = p->next;
  318.             }
  319.  
  320.             p->next = q;
  321.  
  322.             q->prev = p;
  323.  
  324.         }
  325.         else {
  326.             start2 = q;
  327.         }
  328.  
  329.  
  330.         break;
  331.  
  332.     case 3:
  333.         p = start2;
  334.  
  335.         for (int i = countOfNumbers; i >= step; i--)
  336.         {
  337.  
  338.             if (i == countOfNumbers) {
  339.  
  340.                 while (p->next)
  341.                 {
  342.                     p = p->next;
  343.                 }
  344.  
  345.                 q = new DoubleListNumber2;
  346.  
  347.                 q->valuekey = p->valuekey;
  348.  
  349.                 q->next = NULL;
  350.  
  351.                 q->prev = p;
  352.  
  353.                 p->next = q;
  354.  
  355.             }
  356.  
  357.             else if (i == step) {
  358.  
  359.  
  360.                 p->valuekey = n;
  361.  
  362.             }
  363.             else {
  364.  
  365.                 p->valuekey = p->prev->valuekey;
  366.  
  367.                 p = p->prev;
  368.  
  369.             }
  370.  
  371.         }
  372.         break;
  373.     default:
  374.         break;
  375.     }
  376.  
  377.     countOfNumbers++;
  378.  
  379.  
  380. }
  381.  
  382. void addNumberToLIst3(int n, short choice, unsigned short& step, unsigned int& countOfNumbers)
  383. {
  384.  
  385.     DoubleListNumber3* p = start3;
  386.     DoubleListNumber3* q;
  387.  
  388.  
  389.     int position = -1;
  390.  
  391.     if (countOfNumbers > 0)
  392.     {
  393.         position = addingPosition(n, 3);
  394.     }
  395.  
  396.  
  397.     if (choice == 1 && position > 0 && position < countOfNumbers || choice == 2 && position < countOfNumbers && position > 0)
  398.     {
  399.         choice = 3;
  400.  
  401.         step = position;
  402.     }
  403.     else if (choice == 1 && position == countOfNumbers || choice == 2 && position == 0)
  404.     {
  405.         choice = position == countOfNumbers ? 2 : 1;
  406.     }
  407.     else if (choice == 3 && position == 0 || choice == 3 && position == countOfNumbers)
  408.     {
  409.         choice = position == 0 ? 1 : 2;
  410.     }
  411.  
  412.  
  413.     switch (choice)
  414.     {
  415.  
  416.     case 1:
  417.  
  418.         p = start3;
  419.  
  420.         start3 = new DoubleListNumber3;
  421.  
  422.         start3->valuekey = n;
  423.         start3->prev = NULL;
  424.  
  425.         start3->next = p;
  426.  
  427.         if (p)
  428.         {
  429.             p->prev = start3;
  430.         }
  431.  
  432.         break;
  433.  
  434.  
  435.     case 2:
  436.  
  437.         p = start3;
  438.  
  439.         q = new DoubleListNumber3;
  440.  
  441.         q->valuekey = n;
  442.  
  443.         q->next = NULL;
  444.  
  445.         if (start3)
  446.         {
  447.             while (p->next)
  448.             {
  449.                 p = p->next;
  450.             }
  451.  
  452.             p->next = q;
  453.  
  454.             q->prev = p;
  455.  
  456.         }
  457.         else {
  458.             start3 = q;
  459.         }
  460.  
  461.  
  462.         break;
  463.  
  464.     case 3:
  465.  
  466.  
  467.         p = start3;
  468.  
  469.         for (int i = countOfNumbers; i >= step; i--)
  470.         {
  471.  
  472.             if (i == countOfNumbers) {
  473.  
  474.                 while (p->next)
  475.                 {
  476.                     p = p->next;
  477.                 }
  478.  
  479.                 q = new DoubleListNumber3;
  480.  
  481.                 q->valuekey = p->valuekey;
  482.  
  483.                 q->next = NULL;
  484.  
  485.                 q->prev = p;
  486.  
  487.                 p->next = q;
  488.  
  489.             }
  490.  
  491.             else if (i == step) {
  492.  
  493.                 p->valuekey = n;
  494.  
  495.             }
  496.             else {
  497.  
  498.                 p->valuekey = p->prev->valuekey;
  499.  
  500.                 p = p->prev;
  501.  
  502.             }
  503.  
  504.         }
  505.  
  506.         break;
  507.  
  508.     }
  509.  
  510.     countOfNumbers++;
  511.  
  512.  
  513.  
  514. }
  515.  
  516.  
  517. void removeNumbersList3(int n, unsigned int& countOfNumbers)
  518. {
  519.  
  520.     int position = addingPosition(n, 3);
  521.  
  522.     if (position == 0)
  523.     {
  524.  
  525.         DoubleListNumber3* p = start3;
  526.         DoubleListNumber3* q;
  527.  
  528.  
  529.         start3 = p->next;
  530.  
  531.         delete p;
  532.  
  533.         p = start3;
  534.  
  535.         countOfNumbers--;
  536.  
  537.     }
  538.     else if (position == countOfNumbers)
  539.     {
  540.  
  541.         DoubleListNumber3* p = start3;
  542.         DoubleListNumber3* q;
  543.  
  544.         while (p->next)
  545.         {
  546.             p = p->next;
  547.         }
  548.  
  549.  
  550.         q = p->prev;
  551.  
  552.         delete p;
  553.  
  554.         p = q;
  555.  
  556.  
  557.         p->next = NULL;
  558.  
  559.         countOfNumbers--;
  560.  
  561.     }
  562.     else
  563.     {
  564.  
  565.         DoubleListNumber3* p = start3;
  566.  
  567.         for (int j = 1; j < position; j++)
  568.         {
  569.             p = p->next;
  570.         }
  571.  
  572.         p->prev->next = p->next;
  573.  
  574.         p->next->prev = p->prev;
  575.  
  576.         delete p;
  577.  
  578.         countOfNumbers--;
  579.     }
  580. }
  581.  
  582. void removeNumbers(short choice, int count, int n, unsigned short step, unsigned int& countOfNumbers, unsigned int& countOfNumbers3)
  583. {
  584.  
  585.     if (n == 2 || (n == 1 && count == countOfNumbers))
  586.     {
  587.  
  588.         DoubleListNumber* p = start;
  589.         DoubleListNumber* q;
  590.  
  591.         switch (choice)
  592.         {
  593.         case 1:
  594.  
  595.             while (start)
  596.             {
  597.                 start = p->next;
  598.  
  599.                 removeNumbersList3(p->valuekey, countOfNumbers3);
  600.  
  601.                 delete p;
  602.  
  603.                 p = start;
  604.             }
  605.  
  606.             break;
  607.  
  608.         case 2:
  609.  
  610.             while (p->next)
  611.             {
  612.                 p = p->next;
  613.             }
  614.  
  615.             while (p)
  616.             {
  617.                 q = p->prev;
  618.  
  619.                 removeNumbersList3(p->valuekey, countOfNumbers3);
  620.  
  621.                 delete p;
  622.  
  623.                 p = q;
  624.             }
  625.  
  626.             break;
  627.         default:
  628.             break;
  629.         }
  630.  
  631.         countOfNumbers = 0;
  632.     }
  633.     else if (n == 1 || choice == 3)
  634.     {
  635.  
  636.         DoubleListNumber* p = start;
  637.         DoubleListNumber* q;
  638.  
  639.         switch (choice)
  640.         {
  641.         case 1:
  642.  
  643.             for (int i = 0; i < count; i++)
  644.             {
  645.                 DoubleListNumber* p = start;
  646.  
  647.                 start = start->next;
  648.  
  649.                 removeNumbersList3(p->valuekey, countOfNumbers3);
  650.  
  651.                 delete p;
  652.             }
  653.  
  654.             start->prev = NULL;
  655.  
  656.             countOfNumbers -= count;
  657.  
  658.             break;
  659.  
  660.         case 2:
  661.  
  662.             while (p->next)
  663.             {
  664.                 p = p->next;
  665.             }
  666.  
  667.             for (int i = 0; i < count; i++)
  668.             {
  669.                 q = p->prev;
  670.  
  671.                 removeNumbersList3(p->valuekey, countOfNumbers3);
  672.  
  673.                 delete p;
  674.  
  675.                 p = q;
  676.  
  677.             }
  678.  
  679.             p->next = NULL;
  680.  
  681.             countOfNumbers -= count;
  682.  
  683.             break;
  684.  
  685.         case 3:
  686.  
  687.             for (int j = 1; j < step; j++)
  688.             {
  689.                 p = p->next;
  690.             }
  691.  
  692.             p->prev->next = p->next;
  693.  
  694.             p->next->prev = p->prev;
  695.  
  696.             removeNumbersList3(p->valuekey, countOfNumbers3);
  697.  
  698.             delete p;
  699.  
  700.             countOfNumbers--;
  701.  
  702.  
  703.             break;
  704.         default:
  705.             break;
  706.         }
  707.     }
  708. }
  709.  
  710. void removeNumbersList2(short choice, int count, int n, unsigned short step, unsigned int& countOfNumbers, unsigned int& countOfNumbers3)
  711. {
  712.  
  713.     if (n == 2 || (n == 1 && count == countOfNumbers))
  714.     {
  715.  
  716.         DoubleListNumber2* p = start2;
  717.         DoubleListNumber2* q;
  718.  
  719.         switch (choice)
  720.         {
  721.         case 1:
  722.  
  723.             while (start2)
  724.             {
  725.                 start2 = p->next;
  726.  
  727.                 removeNumbersList3(p->valuekey, countOfNumbers3);
  728.  
  729.                 delete p;
  730.  
  731.                 p = start2;
  732.             }
  733.  
  734.             break;
  735.  
  736.         case 2:
  737.  
  738.             while (p->next)
  739.             {
  740.                 p = p->next;
  741.             }
  742.  
  743.             while (p)
  744.             {
  745.                 q = p->prev;
  746.  
  747.                 removeNumbersList3(p->valuekey, countOfNumbers3);
  748.  
  749.                 delete p;
  750.  
  751.                 p = q;
  752.             }
  753.  
  754.             break;
  755.         default:
  756.             break;
  757.         }
  758.  
  759.         countOfNumbers = 0;
  760.     }
  761.     else if (n == 1 || choice == 3)
  762.     {
  763.  
  764.         DoubleListNumber2* p = start2;
  765.         DoubleListNumber2* q;
  766.  
  767.         switch (choice)
  768.         {
  769.         case 1:
  770.  
  771.             for (int i = 0; i < count; i++)
  772.             {
  773.                 DoubleListNumber2* p = start2;
  774.  
  775.                 start2 = start2->next;
  776.  
  777.                 removeNumbersList3(p->valuekey, countOfNumbers3);
  778.  
  779.                 delete p;
  780.             }
  781.  
  782.             start2->prev = NULL;
  783.  
  784.             countOfNumbers -= count;
  785.  
  786.             break;
  787.  
  788.         case 2:
  789.  
  790.             while (p->next)
  791.             {
  792.                 p = p->next;
  793.             }
  794.  
  795.             for (int i = 0; i < count; i++)
  796.             {
  797.                 q = p->prev;
  798.  
  799.                 removeNumbersList3(p->valuekey, countOfNumbers3);
  800.  
  801.                 delete p;
  802.  
  803.                 p = q;
  804.  
  805.             }
  806.  
  807.             p->next = NULL;
  808.  
  809.             countOfNumbers -= count;
  810.  
  811.             break;
  812.  
  813.         case 3:
  814.  
  815.             for (int j = 1; j < step; j++)
  816.             {
  817.                 p = p->next;
  818.             }
  819.  
  820.             p->prev->next = p->next;
  821.  
  822.             p->next->prev = p->prev;
  823.  
  824.             removeNumbersList3(p->valuekey, countOfNumbers3);
  825.  
  826.             delete p;
  827.  
  828.             countOfNumbers--;
  829.         }
  830.     }
  831. }
  832.  
  833.  
  834.  
  835.  
  836. int main()
  837. {
  838.     short choice = -1;
  839.     short choice2 = -1;
  840.     unsigned int countOfNumbers = 0;
  841.     unsigned int countOfNumbers2 = 0;
  842.     unsigned int countOfNumbers3 = 0;
  843.  
  844.     int count = 0;
  845.     int n = 0;
  846.     unsigned short step = 0;
  847.     unsigned short MAX_OPTION = countOfNumbers >= 2 ? 3 : 2;
  848.     unsigned short MAX_OPTION2 = countOfNumbers2 >= 2 ? 3 : 2;
  849.     unsigned int mediumMaxCount = choice == 3 ? countOfNumbers - 2 : countOfNumbers;
  850.     unsigned int mediumMaxCount2 = choice == 3 ? countOfNumbers2 - 2 : countOfNumbers2;
  851.     unsigned int mediumMaxCount3 = choice == 3 ? countOfNumbers3 - 2 : countOfNumbers3;
  852.  
  853.     int choice3 = -1;
  854.  
  855.     do
  856.     {
  857.  
  858.         cout << "Choice option:\n[1] Add number\n[2] Remove number\n[3] Print all numbers\n[0] Exit\n";
  859.         cin >> choice;
  860.  
  861.         switch (choice)
  862.         {
  863.         case 1:
  864.             system("cls");
  865.  
  866.             do
  867.             {
  868.                 cout << "Choose list\n[1] List 1\n[2] List 2\n[0] Exit\n";
  869.  
  870.                 cin >> choice3;
  871.             } while (choice3 < 0 || choice3 > 2);
  872.  
  873.             switch (choice3)
  874.             {
  875.             case 1:
  876.  
  877.                 do
  878.                 {
  879.                     MAX_OPTION = countOfNumbers >= 2 ? 3 : 2;
  880.  
  881.                     countOfNumbers >= 2 ?
  882.                         cout << "Choose option\n[1] in START\n[2] in END\n[3] in MEDIUM\n[0] Exit\n" :
  883.                         cout << "Choose option\n[1] in START\n[2] in END\n[0] Exit\n";
  884.  
  885.                     cin >> choice2;
  886.  
  887.                     if (choice2 > 0)
  888.                     {
  889.                         cout << "" << endl;
  890.  
  891.                         do
  892.                         {
  893.                             cout << "Add count of numbers for adding: ";
  894.                             cin >> count;
  895.  
  896.                         } while (count < 1);
  897.  
  898.                         cout << "" << endl;
  899.  
  900.                         for (int i = 0; i < count; i++)
  901.                         {
  902.                             cout << "Enter number: ";
  903.                             cin >> n;
  904.  
  905.  
  906.                             if (choice2 == 3)
  907.                             {
  908.  
  909.                                 do
  910.                                 {
  911.                                     cout << "Enter step inside" << "[1-" << countOfNumbers - 1 << "]: ";
  912.                                     cin >> step;
  913.  
  914.                                 } while (step < 1 || step > countOfNumbers - 1);
  915.                             }
  916.  
  917.  
  918.  
  919.                             addNumber(n, choice2, step, countOfNumbers);
  920.  
  921.                             addNumberToLIst3(n, choice2, step, countOfNumbers3);
  922.  
  923.                         }
  924.  
  925.                         cout << "Number/s added\n";
  926.                         cout << "" << endl;
  927.                     }
  928.  
  929.  
  930.                 } while (choice2 < 0 || choice2 > MAX_OPTION);
  931.  
  932.                 if (choice2 == 0)
  933.                 {
  934.                     cout << "You choose exit\n";
  935.                 }
  936.  
  937.                 break;
  938.             case 2:
  939.                 do
  940.                 {
  941.                     MAX_OPTION2 = countOfNumbers2 >= 2 ? 3 : 2;
  942.  
  943.                     countOfNumbers2 >= 2 ?
  944.                         cout << "Choose option\n[1] in START\n[2] in END\n[3] in MEDIUM\n[0] Exit\n" :
  945.                         cout << "Choose option\n[1] in START\n[2] in END\n[0] Exit\n";
  946.  
  947.                     cin >> choice2;
  948.  
  949.                     if (choice2 > 0)
  950.                     {
  951.                         cout << "" << endl;
  952.  
  953.                         do
  954.                         {
  955.                             cout << "Add count of numbers for adding: ";
  956.                             cin >> count;
  957.  
  958.                         } while (count < 1);
  959.  
  960.                         cout << "" << endl;
  961.  
  962.                         for (int i = 0; i < count; i++)
  963.                         {
  964.                             cout << "Enter number: ";
  965.                             cin >> n;
  966.  
  967.                             if (choice2 == 3)
  968.                             {
  969.  
  970.                                 do
  971.                                 {
  972.                                     cout << "Enter step inside" << "[1-" << countOfNumbers2 - 1 << "]: ";
  973.                                     cin >> step;
  974.  
  975.                                 } while (step < 1 || step > countOfNumbers2 - 1);
  976.                             }
  977.  
  978.  
  979.                             addNumberToLIst2(n, choice2, step, countOfNumbers2);
  980.  
  981.                             addNumberToLIst3(n, choice2, step, countOfNumbers3);
  982.                         }
  983.                     }
  984.                 } while (choice2 < 0 || choice2 > MAX_OPTION2);
  985.  
  986.  
  987.                 if (choice2 == 0)
  988.                 {
  989.                     cout << "You choose exit\n";
  990.                 }
  991.  
  992.                 break;
  993.  
  994.             default:
  995.                 break;
  996.             }
  997.  
  998.  
  999.             choice = -1;
  1000.             choice2 = -1;
  1001.             choice3 = -1;
  1002.             count = 0;
  1003.             n = 0;
  1004.             step = 0;
  1005.  
  1006.             break;
  1007.  
  1008.         case 2:
  1009.             system("cls");
  1010.  
  1011.  
  1012.  
  1013.             if (start || start2)
  1014.             {
  1015.  
  1016.                 do
  1017.                 {
  1018.                     cout << "Choose list\n[1] List 1\n[2] List 2\n[0] Exit\n";
  1019.                     cin >> choice3;
  1020.  
  1021.                     if (choice3 == 1 && !start) {
  1022.                         cout << "List 1 is empty\n";
  1023.                         cout << "" << endl;
  1024.  
  1025.                         choice3 = -1;
  1026.                     }
  1027.                     else if (choice3 == 2 && !start2)
  1028.                     {
  1029.                         cout << "List 2 is empty\n";
  1030.                         cout << "" << endl;
  1031.  
  1032.                         choice3 = -1;
  1033.                     }
  1034.  
  1035.                 } while (choice3 < 0 || choice3 > 2);
  1036.  
  1037.  
  1038.                 switch (choice3)
  1039.                 {
  1040.  
  1041.                 case 1:
  1042.  
  1043.                     do
  1044.                     {
  1045.                         MAX_OPTION = countOfNumbers >= 2 ? 3 : 2;
  1046.  
  1047.                         countOfNumbers > 2 ?
  1048.                             cout << "Choose option\n[1] from START\n[2] from END\n[3] from MEDIUM\n[0] Exit\n" :
  1049.                             cout << "Choose option\n[1] from START\n[2] from END\n[0] Exit\n";
  1050.                         cin >> choice2;
  1051.  
  1052.                         if (choice2 > 0)
  1053.                         {
  1054.                             if (choice2 < 3) {
  1055.  
  1056.                                 do
  1057.                                 {
  1058.                                     cout << "Choose option\n[1] Current count\n[2] Remove All\n";
  1059.                                     cin >> n;
  1060.  
  1061.                                 } while (n < 0 || n > 2);
  1062.                             }
  1063.  
  1064.                             if (n == 1 || choice2 == 3)
  1065.                             {
  1066.                                 mediumMaxCount = choice2 == 3 ? countOfNumbers - 2 : countOfNumbers;
  1067.  
  1068.                                 do
  1069.                                 {
  1070.                                     cout << "Enter count of numbers for removing" << "[1-" << mediumMaxCount << "]: ";
  1071.                                     cin >> count;
  1072.  
  1073.                                 } while (count < 1 || count > mediumMaxCount);
  1074.                             }
  1075.  
  1076.  
  1077.                             if (choice3 == 1)
  1078.                             {
  1079.                                 removeNumbers(choice2, count, n, step, countOfNumbers, countOfNumbers3);
  1080.                             }
  1081.                             else
  1082.                             {
  1083.                                 removeNumbersList2(choice2, count, n, step, countOfNumbers2, countOfNumbers3);
  1084.                             }
  1085.                         }
  1086.                     } while (choice2 < 0 || choice2 > MAX_OPTION);
  1087.  
  1088.                     if (choice2 == 0 || choice3 == 0)
  1089.                     {
  1090.                         cout << "You choose exit\n";
  1091.                     }
  1092.  
  1093.                     break;
  1094.  
  1095.                 case 2:
  1096.  
  1097.  
  1098.                     do
  1099.                     {
  1100.                         MAX_OPTION2 = countOfNumbers2 >= 2 ? 3 : 2;
  1101.  
  1102.                         countOfNumbers2 > 2 ?
  1103.                             cout << "Choose option\n[1] from START\n[2] from END\n[3] from MEDIUM\n[0] Exit\n" :
  1104.                             cout << "Choose option\n[1] from START\n[2] from END\n[0] Exit\n";
  1105.                         cin >> choice2;
  1106.  
  1107.                         if (choice2 > 0)
  1108.                         {
  1109.                             if (choice2 < 3) {
  1110.  
  1111.                                 do
  1112.                                 {
  1113.                                     cout << "Choose option\n[1] Current count\n[2] Remove All\n";
  1114.                                     cin >> n;
  1115.  
  1116.                                 } while (n < 0 || n > 2);
  1117.                             }
  1118.  
  1119.                             if (n == 1 || choice2 == 3)
  1120.                             {
  1121.                                 mediumMaxCount2 = choice2 == 3 ? countOfNumbers2 - 2 : countOfNumbers2;
  1122.  
  1123.                                 do
  1124.                                 {
  1125.                                     cout << "Enter count of numbers for removing" << "[1-" << mediumMaxCount2 << "]: ";
  1126.                                     cin >> count;
  1127.  
  1128.                                 } while (count < 1 || count > mediumMaxCount2);
  1129.  
  1130.                             }
  1131.  
  1132.  
  1133.                             if (choice3 == 1)
  1134.                             {
  1135.                                 removeNumbers(choice2, count, n, step, countOfNumbers, countOfNumbers3);
  1136.                             }
  1137.                             else
  1138.                             {
  1139.                                 removeNumbersList2(choice2, count, n, step, countOfNumbers2, countOfNumbers3);
  1140.                             }
  1141.                         }
  1142.                     } while (choice2 < 0 || choice2 > MAX_OPTION2);
  1143.  
  1144.                     if (choice2 == 0)
  1145.                     {
  1146.                         cout << "You choose exit\n";
  1147.                     }
  1148.  
  1149.                     break;
  1150.  
  1151.                 default:
  1152.                     break;
  1153.                 }
  1154.             }
  1155.             else
  1156.             {
  1157.  
  1158.                 cout << "List is empty\n";
  1159.             }
  1160.  
  1161.  
  1162.             choice = -1;
  1163.             choice2 = -1;
  1164.             choice3 = -1;
  1165.             count = 0;
  1166.             n = 0;
  1167.             step = 0;
  1168.  
  1169.             break;
  1170.  
  1171.         case 3:
  1172.  
  1173.             system("cls");
  1174.  
  1175.             if (start) {
  1176.  
  1177.                 cout << "List 1: ";
  1178.                 printAllNumbers(1);
  1179.                 cout << "" << endl;
  1180.             }
  1181.             else {
  1182.                 cout << "List is empty\n";
  1183.                 cout << "" << endl;
  1184.             }
  1185.  
  1186.             if (start2) {
  1187.  
  1188.                 cout << "List 2: ";
  1189.                 printAllNumbers(2);
  1190.                 cout << "" << endl;
  1191.             }
  1192.             else {
  1193.                 cout << "List is empty\n";
  1194.                 cout << "" << endl;
  1195.             }
  1196.  
  1197.             if (start3) {
  1198.  
  1199.                 cout << "List 3: ";
  1200.                 printAllNumbers(3);
  1201.                 cout << "" << endl;
  1202.             }
  1203.             else {
  1204.                 cout << "List is empty\n";
  1205.                 cout << "" << endl;
  1206.             }
  1207.  
  1208.             choice = -1;
  1209.  
  1210.             break;
  1211.         default:
  1212.             break;
  1213.         }
  1214.  
  1215.     } while (choice < 0 || choice > 2);
  1216.  
  1217.  
  1218. }
  1219.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement