Advertisement
daniil_mironoff

Ex. 4.3 (1)

May 21st, 2019
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.97 KB | None | 0 0
  1. // ЗАДАНИЕ 4.3 (1)
  2. // В одномерном массиве удалить промежуток элементов от max до min.
  3.  
  4. #include <iostream>     // Для ВВОДА и ВЫВОДА
  5. #include <ctime>        // Для ВРЕМЕНИ (time())
  6. #include <vector>       // Для ВЕКТОРА
  7.  
  8. using namespace std;    // ПРОСТРАНСТВО ИМЁН
  9.  
  10. int main() {
  11.     srand(time(NULL));              // Установка рандома (по времени)
  12.     int min = 100;                  // Минимальное значение
  13.     int index_min = 0;              // Индекс Минимального значения
  14.     int max = -1;                   // Максимальное значение
  15.     int index_max = 0;              // Индекс Максимального значения
  16.     int size;                       // Размер массива
  17.    
  18.     // Ввод размерма массива
  19.     cout << "Enter size array: ";
  20.     cin >> size;
  21.    
  22.     vector<int> arr(size);          // Объявление массива
  23.     cout << "Array:";
  24.    
  25.     // Заполнение массива (числами от 0 до 99)
  26.     for (int i = 0; size > i; i++) {
  27.         arr[i] = rand() % 100;      // Определение значения
  28.        
  29.         // Нахождение МИН и МАКС
  30.         if (arr[i] > max) {
  31.             // Если значение больше последнего МАКС
  32.             max = arr[i];
  33.             index_max = i;
  34.         } else if (arr[i] < min) {
  35.             // Если значение меньше последнего МИН
  36.             min = arr[i];
  37.             index_min = i;
  38.         }
  39.        
  40.         // Для красивого вывода (перевод строки после каждого 10 элем.)
  41.         if (i % 10 == 0) {
  42.             cout << endl;
  43.         }
  44.        
  45.         // Вывод элемента
  46.         cout << arr[i] << " ";
  47.     }
  48.    
  49.     cout << endl;
  50.    
  51.     // Для ясности кода
  52.     if (index_min > index_max) {
  53.         int per = index_min;
  54.         index_min = index_max;
  55.         index_max = per;
  56.     }
  57.    
  58.     // Последние значимое значение массива
  59.     int last_id = -1;
  60.    
  61.     // Сдвиг массива
  62.     for (int i = 0; size - index_max - 1 > i; i++) {
  63.         arr[index_min + i] = arr[index_max + i + 1];
  64.         last_id = index_min + i;
  65.     }
  66.    
  67.     // Удаление незначимых элементов массива
  68.     for (int i = size - 1; last_id + 1 <= i; i--) {
  69.         arr.pop_back();
  70.     }
  71.    
  72.     cout << "New array:";
  73.    
  74.     // Вывод элементов массива
  75.     for (int i = 0; last_id >= i; i++) {
  76.         // Для красивого вывода
  77.         if (i % 10 == 0) {
  78.             cout << endl;
  79.         }
  80.        
  81.         cout << arr[i] << " ";
  82.     }
  83.    
  84.     cout << endl;
  85.  
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement