Advertisement
plarmi

workcpp_4_2

Jun 14th, 2023
603
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3.  
  4. class Array
  5. {
  6. public:
  7.     // Конструкторы
  8.     Array() : m_size(0), m_data(nullptr) {}
  9.    
  10.     explicit Array(size_t size) : m_size(size), m_data(new int[size]) {}
  11.    
  12.     Array(const Array& other) : m_size(other.m_size), m_data(new int[other.m_size])
  13.     {
  14.         std::copy(other.m_data, other.m_data + other.m_size, m_data);
  15.     }
  16.    
  17.     // Деструктор
  18.     ~Array()
  19.     {
  20.         delete[] m_data;
  21.     }
  22.    
  23.     // Оператор присваивания
  24.     Array& operator=(const Array& other)
  25.     {
  26.         if (this != &other)
  27.         {
  28.             delete[] m_data;
  29.             m_size = other.m_size;
  30.             m_data = new int[m_size];
  31.             std::copy(other.m_data, other.m_data + other.m_size, m_data);
  32.         }
  33.         return *this;
  34.     }
  35.    
  36.     // Функции-члены
  37.     void fill(int value)
  38.     {
  39.         std::fill(m_data, m_data + m_size, value);
  40.     }
  41.    
  42.     void display()
  43.     {
  44.         for (size_t i = 0; i < m_size; ++i)
  45.         {
  46.             std::cout << m_data[i] << " ";
  47.         }
  48.         std::cout << std::endl;
  49.     }
  50.    
  51.     void resize(size_t size)
  52.     {
  53.         int* newData = new int[size];
  54.         size_t minSize = std::min(size, m_size);
  55.         std::copy(m_data, m_data + minSize, newData);
  56.         delete[] m_data;
  57.         m_data = newData;
  58.         m_size = size;
  59.     }
  60.    
  61.     void sort()
  62.     {
  63.         std::sort(m_data, m_data + m_size);
  64.     }
  65.    
  66.     int min() const
  67.     {
  68.         return *std::min_element(m_data, m_data + m_size);
  69.     }
  70.    
  71.     int max() const
  72.     {
  73.         return *std::max_element(m_data, m_data + m_size);
  74.     }
  75.    
  76. private:
  77.     size_t m_size;
  78.     int* m_data;
  79. };
  80.  
  81. // Создание массива с размером 5 и заполнение его значениями 10
  82. Array arr(5);
  83. arr.fill(10);
  84.  
  85. // Отображение содержимого массива
  86. arr.display();
  87.  
  88. // Изменение размера массива на 3 и заполнение новых элементов значениями 20
  89. arr.resize(8);
  90. arr.fill(20);
  91.  
  92. // Отображение содержимого массива после изменения размера
  93. arr.display();
  94.  
  95. // Сортировка массива
  96. arr.sort();
  97.  
  98. // Отображение содержимого массива после сортировки
  99. arr.display();
  100.  
  101. // Определение минимального и максимального значения в массиве
  102. std::cout << "Min value: " << arr.min() << std::endl;
  103. std::cout << "Max value: " << arr.max() << std::endl;
  104.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement