Содержание
Цель работы
Изучить создание одномерных динамических массивов при помощи конструкторов с захватом динамической памяти и деструкторов для их уничтожения
Общая постановка
Пользовательский класс Array должен содержать:
- Конструктор с параметром для создания динамических целочисленных массивов (операция new или стандартная библиотечная функция calloc) и установки начальных значений их элементов: Array(…) (реальный размер массива передается через параметр);
- Деструктор: ~Array();
- Метод печати текущего состояния массива: void Print(…);
- Метод переустановки текущего состояния массива: void Set(…);
- Функция, решающая поставленную задачу: void Run(…).
Код методов — вне пространства определения класса. Программа иллюстрирует косвенный способ обращения к элементам массива.
Индивидуальные задания
Составить метод Run, который позволит выполнить следующие действия с одномерными массивами (если задачу решить нельзя, то сообщить об этом).
№ | Условие |
1 | Найти произведение элементов массива, расположенных между максимальным и минимальным элементами. |
2 | Найти произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами. |
3 | Найти сумму элементов массива, расположенных после минимального элемента. |
4 | Найти сумму модулей элементов массива, расположенных после минимального по модулю элемента. |
5 | Найти сумму элементов массива, расположенных до минимального элемента. |
6 | Найти сумму элементов массива, расположенных после первого положительного элемента. |
7 | Преобразовать массив так, чтобы сначала располагались элементы, целая часть которых лежит в интервале $[a,\ b]$, а потом — все остальные. |
8 | Преобразовать массив так, чтобы сначала располагались отрицательные элементы, а потом — положительные (0 считать положительным). |
9 | Найти сумму элементов массива, расположенных после максимального. |
10 | Заменить все отрицательные элементы массива их квадратами. |
11 | Найти сумму элементов массива, расположенных между первым и вторым отрицательным элементами. |
12 | Преобразовать массив так, чтобы в первой половине располагались элементы, стоявшие в нечетных позициях, а во второй половине — в четных. |
13 | Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных. |
14 | Сжать массив, удалив из него элементы, величина которых находится в интервале $[a,\ b]$. Освободившиеся в конце массива элементы заполнить нулями. |
15 | Найти сумму элементов массива, расположенных после минимального. |
Образец выполнения (вариант №10)
Условие задания звучит так:
Заменить все отрицательные элементы массива их квадратами.
➡ Напомню, что число, которое меньше нуля, называется отрицательным.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | #include <iostream> // для консольного ввода-вывода #include <locale> // для руссификации диалогов в программе using namespace std; // создание класса "Одномерный динамический массив целых чисел" class Array { private: int *data; // указатель на данные (элементы) массива int n; // количество элементов в массиве public: Array(const int pn); // параметрический конструктор (принимает на вход кол-во элементов будущего массива) ~Array(); // деструктор (удаляет динамическую память из-под данных) void Print(void); // вывод содержимого массива на экран в строку void Set(const int pn); // происходит переустановка состояний массива (меняется количество элементов массива) void Run(void); // замена всех отрицательных чисел их квадратами }; // параметрический конструктор Array::Array(const int pn) { this->n = pn; this->data = new int[this->n]; for(int i = 0; i < this->n; i++) this->data[i] = -25 + rand() % 51; } // деструктор Array::~Array() { delete []this->data; } // вывод на экран void Array::Print(void) { cout << "Элементы массива имеют вид: "; for(int i = 0; i < this->n; i++) cout << "\t" << this->data[i]; cout << endl; } // переустановка состояние массива void Array::Set(const int pn) { delete []this->data; this->n = pn; this->data = new int[this->n]; for(int i = 0; i < this->n; i++) this->data[i] = -25 + rand() % 51; } // замена всех отрицательных элементов их квадратами void Array::Run(void) { for(int i = 0; i < this->n; i++) if(this->data[i] < 0) this->data[i] *= this->data[i]; } // главная функция программы (точка входа) int main(void) { setlocale(LC_ALL, "rus"); // руссификация всех диалогов в программе Array a(5); // объявление классовой переменной (одномерный массив, состоящий из 5 целых чисел) a.Print(); // вывод значений элементов на дисплей a.Set(8); // изменение количества элементов массива и заполнение их случайными числами a.Print(); // вывод содержимого массива на экран a.Run(); // в массиве все отрицательные элементы заменяем на их квадраты a.Print(); // вывод преобразованного массива на экран cin.get(); // задержка программы, чтобы можно было просмотреть результат return 0; // завершение выполнения программы и передача управления в ОС (код 0 - все прошло успешно) } |
Результаты работы программы
Стоимость заказа работы
➡ Стоимость программы из любого варианта составляет $200$ рублей.
Для оформления заказа пишите на почту: proglabs@mail.ru.
Время нашего ответа обычно составляет не более $10$ минут.
Добавить комментарий