Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<algorithm>
- using namespace std;
- int main()
- {
- //srand(time(NULL));
- int number;
- cout << "Enter the number of task B:";
- cin >> number;
- cout << endl;
- switch (number)
- {
- case(1):
- /* Дан A=(ai) , i=1..n, (n<=10), массив и число b.
- Переставить числа в массиве таким образом, чтобы сначала шли элементы,
- меньшие или равные b, а лишь затем большие b.
- */
- {
- int b, i = 0, size;
- cout << "Enter your number b = ";
- cin >> b;
- cout << endl;
- do
- {
- cout << "Enter array size(1-10) = ";
- cin >> size;
- cout << endl;
- }
- while (size < 0 || size>10);
- int a[10]{};
- cout << "Array before sort:";
- for (i; i < size; i++)
- {
- a[i] = rand() % 15;
- cout << a[i] << " ";
- }
- cout << endl;
- for (i = 0; i < size - 1; i++)
- {
- int j = i + 1;
- while (j > 0 && a[j] < a[j - 1])
- {
- swap(a[j], a[j - 1]);
- j--;
- }
- }
- cout << endl;
- cout << "Array after sort:";
- for (int i = 0; i < size; i++)
- {
- cout << a[i] << " ";
- }
- cout << endl;
- break;
- }
- case(14)://1)Есть ли б в массиве
- //2)Если нет:Найти позицию перед которой будем вставлять , сдвинуть все эл-ты с этой позиции до кона на 1 эл вправо
- //3)Если есть б:
- /* Задана упорядоченная по возрастанию последовательность A=(ai), i=1..n, n<=100, и элемент B.
- Если элемента B нет в последовательности, то вставить его в последовательность,
- чтобы она осталась упорядоченной, иначе удалить все элементы, равные B.
- */
- {
- int a[100]{};
- int b[100]{};
- int B, size, pos = 0, j = 0, temp, count = 0;
- bool check = true;
- cout << "Enter your element B = ";
- cin >> B;
- cout << endl;
- cout << "Enter array size(1-100) = ";
- cin >> size;
- cout << endl;
- cout << "Enter ascending sequence:";
- cout << endl;
- for (int i = 0; i < size; i++)
- {
- cin >> a[i];
- }
- cout << endl;
- sort(a, a + size);//сортировка по возрастанию массива размером size
- for (int i = 0; i < size; i++)
- {
- cout << a[i] << " ";
- }
- cout << endl;
- for (int i = 0; i < size; i++)//ищем В в массиве
- {
- if (a[i] == B)
- check = false;
- }
- if (check)
- {
- while (B > a[j] && j < size)//найдем позицию для вставки
- {
- pos++;
- j++;
- }
- j = size - 1;
- while (j >= pos)
- {
- //сдвинем все эл-ты начиная с этой позиции на 1
- swap(a[j], a[j + 1]);
- j--;
- }
- a[pos] = B;
- for (int i = 0; i < size + 1; i++)
- {
- cout << a[i] << " ";
- }
- j = 0;
- }
- if (check == false)
- {
- for (int i = 0; i < size; i++)
- {
- if (a[i] == B)
- count++;
- if (a[i] != B)
- {
- b[j] = a[i];
- j++;
- }
- }
- for (int i = 0; i < size - count; i++)
- {
- cout << b[i] << " ";
- }
- }
- break;
- }
- case(16)://Задана посл-ть от 1 до 100 членов. Вывести индексы посл-ти в том порядке, в котором соотв-ю им
- //эл-ты образуют убывающую посл-ть
- /*
- Задана целочисленная последовательность A=(ai), i=1..n, n<=100.
- Вывести индексы последовательности в том порядке, в котором соответствующие им элементы
- образуют убывающую последовательность.
- */
- {
- int i=0, n, max, ind;
- int a[100]{};
- int index[100]{};
- cout << "Enter array size[n](1-100):";//0 1 2 3 4
- //1 3 2 7 5 вывод: 34120
- cin >> n;
- cout << endl;
- for (int i = 0; i < n; i++)
- {
- a[i] = rand() % 10;
- cout << a[i] << " ";
- }
- cout << endl;
- for (int i = 0; i < n; i++)
- {
- int j = 0;
- max = a[j];
- ind = j;
- while (j < n) //12653
- {
- if (a[j] > max)
- {
- max = a[j];
- ind = j;
- }//запоминать индекс макс эл
- j++;
- }
- cout << ind << " ";
- a[ind] = -1;
- }
- //нахожу максимальный эл вывожу его индекс и заменяю элемент на 0
- cout << endl;
- break;
- }
- case(11)://C1
- /*
- 3 3 5 6 7 Берем 0 эл 1го массива и сравниваем его с нулевым элементом второго .
- Если элемент 1го массива больше то мы 0й эл 1го сравниваем уже с первым из 2-го т.к посл-ть неубывающая
- 2 4 5 6 8
- */
- /*
- Даны два неубывающих массива X=(xi),i=1..n, n<=10, и Y=(yi),i=1..m, m<=10.
- Найти количество общих элементов в этих массивах (т. е. количество тех целых t, для которых t = xi = yj
- для некоторых i и j). (Число действий порядка m+n.)
- */
- {
- int sizey,sizex,counter = 0;
- cout << "Enter array x size(1-10):";
- cin >> sizex;
- cout << "Enter array y size(1-10):";
- cin >> sizey;
- cout<< endl;
- int x[10]{};
- int y[10]{};
- cout << "Enter a non-decreasing sequence x[i]!!!" << endl;//Введите неубывающую последовательность
- for (int i = 0; i < sizex; i++)
- cin >> x[i];
- cout << endl;
- cout << "Enter a non-decreasing sequence y[i]!!!" << endl;//Введите неубывающую последовательность
- for (int j = 0; j < sizey; j++)
- cin >> y[j];
- for (int i = 0 , j = 0; i < sizex && j<sizey;)
- {
- if (x[i] < y[j])
- i++;
- if (x[i] > y[j])
- j++;
- if (x[i] == y[j])
- {
- counter++;
- i++;
- j++;
- }
- }
- cout << endl;
- cout<<"Number of duplicate items = " << counter <<endl;
- break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement