Есть прога помогите дописать: SetSize(int size, int grow = 1) - установка размера массива (если параметр size больше предыдущего размера массива, то выделяется дополнительный блок памяти, если нет, то "лишние" элементы теряются и память освобождается); параметр grow определяет для какого количества элементов необходимо выделить память, если количество элементов превосходит текущий размер массива. Например, SetSize(5, 5); означает, что при добавлении 6-го элемента размер массива становится равным 10, при добавлении 11-го - 15 и т. д.
GetUpperBound - получение последнего допустимого индекса в массиве. Например, если при размере массива 10, вы добавляете в него 4 элемента, то функция вернет 3.
Вот прога:
| Код | #include <iostream.h>
template<typename T> struct Elem { T data;T pos; Elem *Next,*prev; }; template<typename T> class Array { Elem<T> *Head,*Tail; int Size; public: Array(); ~Array(); int GetSize(); DelAll(); Array:: GetAt(int pos); Array<T>::Del(int n); Array<T>::operator = (const Array<T> & A); void IsEmty(); Array<T>::operator < (const Array& A);
}; template<typename T> Array<T>::Array() { Head=Tail=0; Size=0; } template <typename T> Array<T>::~Array() { DelAll(); } template <typename T> Array<T>::operator = (const Array<T> & A) { if(this == &A) return *this;
this->~Array();
Elem<T> * temp = A.Head;
while(temp != 0) { AddTail(temp->data); temp = temp->Next; }
return *this; }
template <typename T> Array<T>::operator < (const Array& A) { if(Size < A.Size) return true; return false; }
template <typename T> Array<T>::DelAll() { while(Size != 0) Del(1); } template <typename T> Array<T>::Del(int n) { { cout << "Ydaliaemii element""\n"; return(0); } int i = 1; Elem<T> * Del = Head; while(i < n) { Del = Del->Next; i++; } Elem<T> * PrevDel = Del->prev; Elem<T> * AfterDel = Del->Next; if(PrevDel != 0 && Size != 1) PrevDel->Next = AfterDel; if(AfterDel != 0 && Size != 1) AfterDel->prev = PrevDel; if(n == 1) Head = AfterDel; if(n == Size) Tail = PrevDel; delete Del; Size--; } template<typename T> void IsEmty() { for(int i=0;i<GetSize;i++) { if (i==NULL) { cout<<"Massiv pust""\n"; } else
cout<<"V Massive imeutsa elementi""\n"; }
}
template<typename T> int Array<T>::GetSize() { return Size; } template <typename T> Array<T>::GetAt(int pos) { Elem<T> *temp = Head; { cout <<" GetAt = "; } int i = 1; while(i < pos && temp != 0) { temp = temp->Next; i++; }
}
void main() { Array<int> a; int m[]={9,1,5, 6,4, 0,2,3,2,8}; double d[]={0.9, 10.5, 0.1, 2.4}; cout<<"\n"; cout<<"Elementi massiva : "; for(int i=0; i<10; i++) cout<<m[i]<<' ';cout<<"\n"; cout<<"********************************""\n"; cout<<"\n"; a.GetAt(2); cout<<m[0]<<"\n"; cout<<"\n"; cout<<"************************""\n"; a.GetSize(); cout<<"GetSize ="<<i<<"\n"; cout<<"********************************""\n"; a.IsEmty(); // for(i=0; i<4; i++)cout<<d[i]<<' ';cout<<"\n"; // cout<<"********************************""\n"; // a.GetElem(1); // cout<<d[0]<<"\n"; // cout<<"********************************""\n"; // a.Del(i); // cout<<d[2]<<"\n"; }
|
|