Лекция: ХІД ВИКОНАННЯ ПРОГРАМИ
ПРАКТИЧНА РОБОТА №4
Тема: Створення динамічного класу Array. Створення об’єктів, які мають необмежену кількість елементів динамічного масиву.
Мета: опанувати навички створення динамічних об’єктів, які мають необмежену кількість елементів динамічного масиву
ТЕОРЕТИЧНІ ВІДОМОСТІ
Перед виконання роботи самостійно повторити теоретичний матеріал « Динамічна пам’ять. Динамічні об’єкти»
ХІД ВИКОНАННЯ ПРОГРАМИ
- Розглянути наступну програму. Записати у звіт практичної роботи призначення наступних закрітіх членів класу Array: int m_iSize, m_iStep, m_iCurInd,*m_pAr.
- З’ясувати призначення функцій void AddMemory(), void Show(), void Add(int a), конструкторів Array (int iSize, int iStep);
- Виконати на ПК.
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;
}