ЗАВДАННЯ №1.

Створити клас DinMas (Динамічний масив).У класі передбачити можливість добавлення нових елементів масиву при перевищенні розмірності

масиву. Клас повинен містити конструктор без параметрів ( ініціалізує масив із п’яти елементів), конструктор ініціалізації

( розмірність задається з клавіатури), конструктор копіювання, деструктор, функцію виведення елементів масиву.

Також у класі визначити:

функцію, яка повертає кількість від’ємних елементів;

функцію, яка сортовує масив по-зростанню;

функцію, яка кожний елемент масиву множить на число типу int;

Створити два об’єкта Ar1 , Ar2 даного класу. Перший об’єкт ініціалізується конструктором без параметрів, другий –

конструктором ініціалізації. Вивести два об’єкта на екран з коментарями.

Знайти кількість від’ємних елементі, відсортовати масив по-зростанню, кожний елемент масиву помножить на число чотири;

Створити об’єкт Ar3 на основі об’єкта Ar2 даного класу.

Результати вивести на екран.

#include <iostream>

#include <stdlib.h>

#include <math.h>

#include <conio.h>

using namespace std;

class Array

{

int *m_arr;

int m_size;

int m_step;

int m_curInd;

 

void AddMemory();

public:

Array(int size, int step);

Array();

~Array();

void Add(int a);

void Show();

int Get(int index);

int subZero();

void mul();

void sort();

};

 

void Array::AddMemory()

{

int *n_arr = new int[m_size + m_step];

memcpy(n_arr, m_arr, m_size * sizeof(int));

//delete []m_arr;

m_arr = n_arr;

m_size += m_step;

}

Array::Array()

{

m_size = 10;

m_step = 5;

m_curInd = 0;

m_arr = new int[m_size];

}

 

Array::Array(int size, int step) : m_size(size), m_step(step), m_curInd(0), m_arr(new int[size]) {}

 

Array::~Array()

{

delete []m_arr;

}

 

void Array::Add(int a)

{

m_arr[m_curInd++] = a;

if (m_curInd == m_size)

AddMemory();

}

 

void Array::Show()

{

for (int i = 0; i < m_curInd; i++)

cout << m_arr[i] << " ";

cout << endl;

}

 

int Array::Get(int index)

{

return m_arr[index];

}

 

 

void main()

{

Array *Ar1 = new Array();

Array *Ar2 = new Array(10,5);

 

cout<<"Ar1 - ";

Ar1->Show();

cout<<"Ar2 - ";

Ar2->Show();

for (int i = 0; i < 10; i++)

{

Ar1->Add(rand()%300 - 150);

Ar2->Add(rand()%300 - 150);

}

cout<<"the number of negative values Ar1 "<<Ar1->subZero()<<"n";

cout<<"the number of negative values Ar2 "<<Ar2->subZero()<<"n";

cout<<"Sorting an array in ascending Ar1n";

Ar1->sort();

Ar1->Show();

cout<<"n";

cout<<"Sorting an array in ascending Ar2n";

Ar2->sort();

Ar2->Show();

cout<<"n";

cout<<"Multiply by 4n";

Ar1->mul();

Ar1->Show();

cout<<"n";

Ar2->mul();

Ar2->Show();

cout<<"n";

Array *Ar3(Ar2);

Ar3->Show();

system("pause");

 

}

int Array::subZero()

{

int a = 0;

for(int g = 0; g < m_size; g++)

if(m_arr[g] < 0)

a++;

return a;

}

void Array::sort()

{

for(int k = 0; k < m_size; k++)

for(int j = k + 1; j < m_size;j++)

if(m_arr[k] > m_arr[j])

{

m_arr[k] += m_arr[j];

m_arr[j] = m_arr[k] - m_arr[j];

m_arr[k] = m_arr[k] - m_arr[j];

}

}

void Array::mul()

{

for(int b = 0; b < m_size;b++)

{

m_arr[b] *= 4;

}

}