Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4_ПРАКТИЧНА №4 -Динам_Мас.doc
Скачиваний:
1
Добавлен:
21.11.2019
Размер:
79.87 Кб
Скачать

Практична робота №4

Тема: Створення динамічного класу Array. Створення об’єктів , які мають необмежену кількість елементів динамічного масиву.

Мета: опанувати навички створення динамічних об’єктів , які мають необмежену кількість елементів динамічного масиву

Теоретичні відомості

Перед виконання роботи самостійно повторити теоретичний матеріал « Динамічна пам’ять. Динамічні об’єкти»

Хід виконання програми

  1. Розглянути наступну програму. Записати у звіт практичної роботи призначення наступних закрітіх членів класу Array : int m_iSize, m_iStep, m_iCurInd,*m_pAr.

  2. З’ясувати призначення функцій void AddMemory(), void Show(), void Add(int a), конструкторів Array (int iSize, int iStep);

  3. Виконати на ПК.

class Array

{ int m_iSize, m_iStep, m_iCurInd;

int *m_pAr;

void AddMemory();

public:

Array (int iSize, int iStep);

void Show();

void Add(int a);

~Array();

};//-----------Реалізація конструктора ініціалізації---------------------------------

Array::Array (int iSize, int iStep):m_iSize(iSize), m_iStep(iStep), m_iCurInd(0),

m_pAr(new int [iSize])

{

cout << "Array constr "<<m_iSize<<" "<<this<<endl;

}

//---------------Реалізація функції Show()--------------------------------------------

void Array::

{

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

cout << m_pAr[i]<<" ";

cout<<endl;

}//---------------Реалізація функції Add(int a)---------------------------------------

void Array::Add(int a)

{

m_pAr[m_iCurInd++] = a;

if(m_iCurInd == m_iSize)

AddMemory();

}//---------------Реалізація деструктора---------------------------------------------

Array::~Array()

{

cout<<"~Array "<<m_iSize<<" "<<this<<endl;

delete [] m_pAr;

}//----------------Реалізація функції AddMemory()------------------------------------

void Array::AddMemory()

{

int * pAr = new int [m_iSize + m_iStep];

memcpy(pAr, m_pAr, m_iSize * sizeof(int));

delete [] m_pAr;

m_pAr = pAr;

m_iSize += m_iStep;

}

int main()

{

{ Array ar(10, 5);

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

ar.Add(rand()%21);

ar.Show();

}

return 0;

}

Індивідуальне завдання

ЗАВДАННЯ № 1

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

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

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

ЗАВДАННЯ № 2

Створити клас DinMas (Динамічний масив). Закритими даними-членами є розмірність масиву та вказівник на масив. Відкритими функціями-членами є : конструктор без параметрів ( ініціалізує масив із шести елементів), конструктор ініціалізації ( розмірність задається з клавіатури)деструктор, функцію виведення елементів масиву.

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

ЗАВДАННЯ № 3

Створити клас "Vector", що містить покажчик на int, число елементів і змінну стану. Визначити конструктор без параметрів, конструктор з одним параметром, конструктор із двома параметрами. Конструктор без параметрів виділяє місце для одного елемента та ініціалізує його в нуль. Конструктор з одним параметром (розмір вектора) виділяє місце та ініціалізує нулями, конструктор із двома параметрами виділяє місце (перший аргумент) та ініціалізує другим аргументом. Деструктор звільняє пам'ять. Визначити функцію, яка присвоює елементу масиву деяке значення (параметр за замовчуванням), функцію яка повертає деякий елемент масиву. У змінну стану встановлювати код помилки, якщо не вистачає пам'яті або відбувається вихід за межі масиву. Визначити функцію друку

ЗАВДАННЯ № 4

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

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

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

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

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

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

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

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

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

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

ЗАВДАННЯ № 5

Дан клас Mas (Динамічний масив). Клас містить конструктор без параметрів ( ініціалізує масив із сіми елементів), конструктор ініціалізації ( розмірність задається з клавіатури), деструктор, функцію виведення елементів масиву.

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

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

  • функцію, яка вилучає елемент масиву, індекс якого вказує користувач;

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

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

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

Знайти суму додатніх елементі, вилучити елемент масиву, індекс якого вказує користувачем, відсортовати масив по- зменьшенню. Результати вивести на екран.

ПРИМІТКА : У класі передбачити можливість добавлення нових елементів масиву при перевищенні розмірності масиву.

ЗАВДАННЯ № 6

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

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

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

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

  • функцію, яка вставляє новий елемент масиву у визначене місце;

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

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

Знайти кількість додатніх елементі, вставляє новий елемент масиву, індекс якого вказує користувачем, кожний елемент масиву помножить на число типу double. Результати вивести на екран.

ЗАВДАННЯ № 7

Дан клас Mas (Динамічний масив).Клас повинен містити конструктор без параметрів ( ініціалізує масив із восьми елементів), конструктор ініціалізації ( розмірність задається з клавіатури), деструктор, функцію виведення елементів масиву.

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

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

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

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

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

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

ПРИМІТКА : У класі передбачити можливість добавлення нових елементів масиву при перевищенні розмірності масиву .Вивести результати

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

ЗАВДАННЯ № 8

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

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

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

  • функцію, яка вилучає елемент масиву, індекс якого вказує користувач;

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

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

Створити два об’єкта Ar1 даного класу. Вивести об’єкт на екран з коментарями.

Створити об’єкт Ar2 на основі об’єкта Ar1 даного класу. Вивести об’єкт на екран з коментарями.

З клавіатури задати індекс елемента масиву , який буде вилучатись в об’єкті Ar2. Вивести об’єкт на екран . Відсортовати масив об’єкта Ar2 по-зростанню. Вивести об’єкт на екран. Кожний елемент масиву поділить на число типу int.

ЗАВДАННЯ № 9

Дан клас DinAr (Динамічний масив), який містить розмірність масиву та вказівник на масив, конструктор без параметрів ( ініціалізує масив із шости елементів), конструктор ініціалізації ( розмірність задається з клавіатури), конструктор копіювання, деструктор, функцію виведення елементів масиву.

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

  • функцію, яка вилучає елемент масиву, індекс якого вказує користувач;

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

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

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

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

Відсортувати об’єкт Ar1 даного класу по-зростанню, об’єкт Ar3 по-зменьшенню. Вивести два об’єкта на екран з коментарями.

В об’єкті Ar2 вилучити елемент масиву, індекс якого ввести з клавіатури.

ЗАВДАННЯ № 10

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

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

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

  • функцію, яка вставляє новий елемент масиву у визначене місце;

  • функцію, яка вилучає елемент масиву, індекс якого вказує користувач;

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

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

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

Із об’єкта Ar1 вилучити елемент масиву (задається з клавіатури) і втавити його в об’єкт Ar3 . Вивести два об’єкта на екран з коментарями.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]