Advertisement
Guest User

EGOR PUSSY

a guest
Oct 21st, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.39 KB | None | 0 0
  1.      #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. int main()
  5.  
  6. {
  7.     //srand(time(NULL));
  8.     int number;
  9.     cout << "Enter the number of task B:";
  10.     cin >> number;
  11.     cout << endl;
  12.  
  13.     switch (number)
  14.     {
  15.  
  16.     case(1):
  17. /*  Дан A=(ai) ,  i=1..n,  (n<=10), массив  и число b.
  18.     Переставить  числа  в массиве  таким  образом, чтобы сначала шли  элементы,
  19.     меньшие или равные b, а лишь затем большие b.
  20. */
  21.  
  22.        
  23.     {
  24.        
  25.         int b, i = 0, size;
  26.         cout << "Enter your number b = ";
  27.         cin >> b;
  28.         cout << endl;
  29.         do
  30.         {
  31.             cout << "Enter array size(1-10) = ";
  32.             cin >> size;
  33.             cout << endl;
  34.         }
  35.         while (size < 0 || size>10);
  36.  
  37.         int a[10]{};
  38.         cout << "Array before sort:";
  39.         for (i; i < size; i++)
  40.         {
  41.             a[i] = rand() % 15;
  42.             cout << a[i] << " ";
  43.         }
  44.         cout << endl;
  45.  
  46.         for (i = 0; i < size - 1; i++)
  47.         {
  48.             int j = i + 1;
  49.  
  50.             while (j > 0 && a[j] < a[j - 1])
  51.             {
  52.                 swap(a[j], a[j - 1]);
  53.                 j--;
  54.             }
  55.  
  56.         }
  57.         cout << endl;
  58.         cout << "Array after sort:";
  59.  
  60.         for (int i = 0; i < size; i++)
  61.         {
  62.             cout << a[i] << " ";
  63.         }
  64.         cout << endl;
  65.         break;
  66.  
  67.     }
  68.     case(14)://1)Есть ли б в массиве
  69.              //2)Если нет:Найти позицию перед которой будем вставлять , сдвинуть все эл-ты с этой позиции до кона на 1 эл вправо
  70.              //3)Если есть б:
  71.  
  72. /*              Задана упорядоченная  по возрастанию последовательность   A=(ai),  i=1..n, n<=100,  и элемент B.
  73.                 Если элемента B нет  в последовательности, то вставить его в последовательность,
  74.                 чтобы  она осталась упорядоченной, иначе удалить все элементы, равные B.
  75. */
  76.     {
  77.    
  78.         int a[100]{};
  79.         int b[100]{};
  80.         int B, size, pos = 0, j = 0, temp, count = 0;
  81.         bool check = true;
  82.  
  83.         cout << "Enter your element B = ";
  84.         cin >> B;
  85.         cout << endl;
  86.  
  87.         cout << "Enter array size(1-100) = ";
  88.         cin >> size;
  89.         cout << endl;
  90.  
  91.         cout << "Enter ascending sequence:";
  92.         cout << endl;
  93.         for (int i = 0; i < size; i++)
  94.         {
  95.             cin >> a[i];
  96.         }
  97.         cout << endl;
  98.  
  99.  
  100.         sort(a, a + size);//сортировка по возрастанию массива размером size
  101.  
  102.  
  103.         for (int i = 0; i < size; i++)
  104.         {
  105.             cout << a[i] << " ";
  106.         }
  107.         cout << endl;
  108.         for (int i = 0; i < size; i++)//ищем В в массиве
  109.         {
  110.             if (a[i] == B)
  111.                 check = false;
  112.         }
  113.  
  114.         if (check)
  115.         {
  116.             while (B > a[j] && j < size)//найдем позицию для вставки
  117.             {
  118.                 pos++;
  119.                 j++;
  120.             }
  121.             j = size - 1;
  122.             while (j >= pos)
  123.             {
  124.                 //сдвинем все эл-ты начиная с этой позиции на 1
  125.                 swap(a[j], a[j + 1]);
  126.                 j--;
  127.             }
  128.             a[pos] = B;
  129.             for (int i = 0; i < size + 1; i++)
  130.             {
  131.                 cout << a[i] << " ";
  132.             }
  133.             j = 0;
  134.         }
  135.         if (check == false)
  136.         {
  137.             for (int i = 0; i < size; i++)
  138.             {
  139.                 if (a[i] == B)
  140.                     count++;
  141.  
  142.                 if (a[i] != B)
  143.                 {
  144.                     b[j] = a[i];
  145.                     j++;
  146.                 }
  147.             }
  148.  
  149.             for (int i = 0; i < size - count; i++)
  150.             {
  151.                 cout << b[i] << " ";
  152.  
  153.             }
  154.         }
  155.  
  156.         break;
  157.     }
  158.  
  159.  
  160.  
  161.  
  162.  
  163.     case(16)://Задана посл-ть от 1 до 100 членов. Вывести индексы посл-ти  в том порядке, в котором соотв-ю им
  164.              //эл-ты образуют убывающую посл-ть
  165.  
  166. /*             
  167.                 Задана целочисленная последовательность A=(ai), i=1..n, n<=100.  
  168.                 Вывести индексы последовательности в том порядке, в котором соответствующие им элементы
  169.                 образуют убывающую последовательность.
  170. */
  171.     {
  172.    
  173.         int  i=0, n, max, ind;
  174.         int a[100]{};
  175.         int index[100]{};
  176.         cout << "Enter array size[n](1-100):";//0 1 2 3 4
  177.                                               //1 3 2 7 5      вывод: 34120
  178.         cin >> n;
  179.         cout << endl;
  180.         for (int i = 0; i < n; i++)
  181.         {
  182.             a[i] = rand() % 10;
  183.             cout << a[i] << " ";
  184.         }
  185.         cout << endl;
  186.         for (int i = 0; i < n; i++)
  187.         {
  188.             int j = 0;
  189.             max = a[j];
  190.             ind = j;
  191.             while (j < n) //12653
  192.             {
  193.                 if (a[j] > max)
  194.                 {
  195.                     max = a[j];
  196.                     ind = j;
  197.                 }//запоминать индекс макс эл
  198.                 j++;
  199.  
  200.             }
  201.             cout << ind << " ";
  202.             a[ind] = -1;
  203.  
  204.         }
  205.         //нахожу максимальный эл вывожу его индекс и заменяю элемент на 0
  206.            
  207.         cout << endl;
  208.  
  209.        
  210.  
  211.         break;
  212.     }
  213.  
  214.  
  215.     case(11)://C1
  216. /*
  217.   3 3 5 6 7  Берем 0 эл 1го массива и сравниваем его с нулевым  элементом второго .
  218.              Если элемент 1го массива  больше то мы 0й эл 1го сравниваем уже с первым из 2-го т.к посл-ть неубывающая
  219.   2 4 5 6 8
  220. */
  221. /*             
  222.                 Даны  два неубывающих массива X=(xi),i=1..n, n<=10,  и Y=(yi),i=1..m, m<=10.
  223.                 Найти  количество  общих элементов в этих массивах (т. е. количество тех целых t, для которых  t = xi = yj  
  224.                 для некоторых i и j). (Число действий порядка m+n.)
  225. */
  226.     {
  227.         int sizey,sizex,counter = 0;
  228.         cout << "Enter array x size(1-10):";
  229.         cin >> sizex;
  230.         cout << "Enter array y size(1-10):";
  231.         cin >> sizey;
  232.  
  233.         cout<< endl;
  234.  
  235.         int x[10]{};
  236.         int y[10]{};
  237.  
  238.         cout << "Enter a non-decreasing sequence x[i]!!!" << endl;//Введите неубывающую последовательность
  239.         for (int i = 0; i < sizex; i++)
  240.             cin >> x[i];
  241.    
  242.         cout << endl;
  243.  
  244.         cout << "Enter a non-decreasing sequence y[i]!!!" << endl;//Введите неубывающую последовательность
  245.         for (int j = 0; j < sizey; j++)
  246.             cin >> y[j];
  247.  
  248.         for (int i = 0 , j = 0; i < sizex && j<sizey;)
  249.         {
  250.             if (x[i] < y[j])
  251.                 i++;
  252.  
  253.             if (x[i] > y[j])
  254.                 j++;
  255.  
  256.             if (x[i] == y[j])
  257.             {
  258.                 counter++;
  259.                 i++;
  260.                 j++;
  261.             }
  262.  
  263.         }
  264.         cout << endl;
  265.         cout<<"Number of duplicate items = " << counter <<endl;
  266.  
  267.  
  268.         break;
  269.     }
  270.  
  271.  
  272.     }
  273.     return 0;
  274. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement