Advertisement
Bibizon

с++

Sep 1st, 2020 (edited)
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.21 KB | None | 0 0
  1. 1. Заполнение массива случайными неповторяющимися числами и нахождение минимального элемента
  2. #include <iostream>
  3. #include <ctime>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.     srand(time(NULL));
  9.     const int SIZE = 10; //Размер изменять тут
  10.     int arr[SIZE];
  11.  
  12.     //Заполнение
  13.     for (int i = 0; i < SIZE; i++) {
  14.         arr[i] = rand() % 100; //Можно выставить любой диапазон
  15.         for (int j = 0; j < i; j++) { //Вложенный цикл для нахождения повторяющихся элементов и их замены
  16.             if (arr[i] == arr[j]) {
  17.                 i--;
  18.                 break;
  19.             }
  20.         }
  21.     }
  22.  
  23.     //Нахождение минимального элемента
  24.     int min = arr[0];
  25.     for (int i = 1; i < SIZE; i++) {
  26.         if (min > arr[i]) {
  27.             min = arr[i];
  28.         }
  29.     }
  30.  
  31.     // Вывод массива
  32.     for (int i = 0; i < SIZE; i++) {
  33.         cout << arr[i] << endl;
  34.     }
  35.     cout << "min = " << min;
  36. }
  37.  
  38. 2. Перевод из десятичной в негадвоичную
  39. #include <iostream>
  40. #include <ctime>
  41. using namespace std;
  42.  
  43. void main()
  44. {
  45.     int num_ten, rem = 0;
  46.     cin >> num_ten;
  47.     string num_two = "";
  48.     while (num_ten != 0) {
  49.         rem = num_ten % -2;
  50.         num_ten /= -2;
  51.         if (rem < 0) {
  52.             rem *= -1;
  53.             num_ten++;
  54.         }
  55.         if (rem == 1) {
  56.             num_two = "1" + num_two;
  57.         }
  58.         if (rem == 0) {
  59.             num_two = "0" + num_two;
  60.         }
  61.     }
  62.     cout << num_two;
  63. }
  64.  
  65. 2.1 Вывод цифр по одной
  66. cout << num_two << endl;
  67.     for (int i = 0; i < size(num_two); i++) {
  68.         cout << num_two[i] << " ";
  69.     }
  70.  
  71. 3. Дерево и поиск максимального
  72. #include <iostream>
  73. #include <ctime>
  74. #include <string>  
  75. #include <cstring>  
  76. using namespace std;
  77.  
  78.  
  79. const int MAXN = 8, INF = 10e9;
  80. int dataa[MAXN];
  81. int tree[MAXN * 4];
  82.  
  83. void buildTree(int p, int l, int r)
  84. {
  85.     if (r - l == 1) {
  86.         tree[p] = dataa[l];
  87.         return;
  88.     }
  89.     int m = (r + l) / 2;
  90.     buildTree(2 * p + 1, l, m);
  91.     buildTree(2 * p + 2, m, r);
  92.     tree[p] = max(tree[2 * p + 1], tree[2 * p + 2]);
  93. }
  94.  
  95. int getMax(int p, int l, int r, int a, int b)
  96. {
  97.     if (b <= l || r <= a) {
  98.         return -INF;
  99.     }
  100.     if (a <= l && r <= b) {
  101.         return tree[p];
  102.     }
  103.     int m = (r + l) / 2;
  104.     return max(getMax(2 * p + 1, l, m, a, b), getMax(2 * p + 2, m, r, a, b));
  105. }
  106.  
  107. void rebuild(int p, int l, int r, int index, int value)
  108. {
  109.     int m = (r + l) / 2;
  110.     if ((l == index || r - 1 == index) && (r - l == 1)) {
  111.         tree[p] = value;
  112.         return;
  113.     }  
  114.     if (!(l == index || r - 1 == index) && (r - l == 1)) {
  115.         return;
  116.     }
  117.     rebuild(2 * p + 1, l, m, index, value);
  118.     rebuild(2 * p + 2, m, r, index, value);
  119.     tree[p] = max(tree[2 * p + 1], tree[2 * p + 2]);
  120. }
  121.  
  122. void fillArray() {
  123.     srand(time(NULL));
  124.     for (int i = 0; i < MAXN; i++) {
  125.         dataa[i] = rand() % 100;
  126.     }
  127. }
  128.  
  129. void printTabs(int a, char b) {
  130.     for (int i = 0; i < a; i++) {
  131.         cout << b;
  132.     }
  133. }
  134.  
  135. void printTree()
  136. {
  137.     int checker = 1;
  138.     int counter = 0;
  139.     int number_of_tabs = MAXN / 2;
  140.     char tabula = ' ';
  141.     printTabs(number_of_tabs * 2, tabula);
  142.     for (int i = 0; i < 4 * MAXN; i++) {
  143.         cout << tree[i] << " ";
  144.         counter++;
  145.         if (i == checker - 1) {
  146.             number_of_tabs--;
  147.             cout << endl;
  148.             printTabs(number_of_tabs * 2, tabula);
  149.             checker = 2 * checker + 1;
  150.             counter = 0;
  151.         }
  152.         if (counter - MAXN == MAXN) {
  153.             cout << "reserve" << endl;
  154.         }
  155.     }
  156. }
  157.  
  158. int main()
  159. {
  160.     fillArray();
  161.     buildTree(0, 0, MAXN);
  162.     printTree();
  163.     int ain, bain, enter, index, value, enter1;
  164.     cout << endl;
  165.     cout << "Type 1 if you want to find max number: ";
  166.     cin >> enter;
  167.     if (enter == 1) {
  168.         cin >> ain >> bain;
  169.         cout << "Max number is " << getMax(0, 0, MAXN, ain, bain) << endl;
  170.     }
  171.     cout << "Type 1 if you want to rebuild the tree: ";
  172.     cin >> enter1;
  173.     if (enter1 == 1) {
  174.         cin >> index >> value;
  175.         rebuild(0, 0, MAXN, index, value);
  176.         printTree();
  177.     }
  178.     return 0;
  179. }
  180.  
  181. 4. Дерево и поиск минимального
  182.  
  183. #include <iostream>
  184. #include <ctime>
  185. #include <string>  
  186. #include <cstring>  
  187. using namespace std;
  188.  
  189. const int MAXN = 100000, INF = 10e9;
  190. int dataa[MAXN];
  191. int tree[MAXN];
  192.  
  193. void buildTree(int p, int l, int r)
  194. {
  195.     if (r - l == 1) {
  196.         tree[p] = dataa[l];
  197.         return;
  198.     }
  199.     int m = (r + l) / 2;
  200.     buildTree(2 * p + 1, l, m);
  201.     buildTree(2 * p + 2, m, r);
  202.     tree[p] = min(tree[2 * p + 1], tree[2 * p + 2]);
  203. }
  204.  
  205. int getMin(int p, int l, int r, int a, int b)
  206. {
  207.     if (a == b) {
  208.         return dataa[a-1];
  209.     }
  210.     if (b <= l || r+1 <= a) {
  211.         return INF;
  212.     }
  213.     if (a <= l+1 && r <= b+1) {
  214.         return tree[p];
  215.     }
  216.     int m = (r + l) / 2;
  217.     return min(getMin(2 * p + 1, l, m, a, b), getMin(2 * p + 2, m, r, a, b));
  218. }
  219.  
  220. void fillArray(int n)
  221. {
  222.     for (int i = 0; i < n; i++) {
  223.         cin >> dataa[i];
  224.     }
  225. }
  226.  
  227. void printArray(int n, int a[])
  228. {
  229.     for (int i = 0; i < n * 4; i++) {
  230.         cout << a[i];
  231.         cout << " ";
  232.     }
  233. }
  234.  
  235. void printArrayofAns(int n, int a[])
  236. {
  237.     for (int i = 0; i < n; i++) {
  238.         cout << a[i];
  239.         cout << endl;
  240.     }
  241. }
  242.  
  243. int main()
  244. {
  245.     int q, n;
  246.     cin >> n;
  247.     fillArray(n);
  248.     buildTree(0, 0, n);
  249.     //printArray(n, tree);
  250.     cin >> q;
  251.     int respondoj[10000];
  252.     for (int i = 0; i < q; i++) {
  253.         int l, r;
  254.         cin >> l >> r;
  255.         respondoj[i] = getMin(0, 0, n, l, r);
  256.     }
  257.     printArrayofAns(q, respondoj);
  258. }
  259.  
  260. 5. Членение строки на слова
  261. for (int i = 0; i < entero.size(); i++)
  262.     {
  263.         if (entero[i] == ' ' && entero[i - 1] != ' ')
  264.         {
  265.             string strtemp, str1 = entero;
  266.             strtemp = str1.substr(0, i);
  267.             //strtemp - искомая
  268.         }
  269.         if (i + 1 == entero.size())
  270.         {
  271.             //entero - искомая
  272.         }
  273.         if (entero[i] == ' ' && entero[i + 1] != ' ')
  274.         {
  275.             entero == entero.erase(0, i + 1);
  276.             i = 0;
  277.         }
  278.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement