Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив2 / курсовая docx100 / Dokumentatsia_k_kursovoy_po_OOP.docx
Скачиваний:
57
Добавлен:
07.08.2013
Размер:
372.49 Кб
Скачать
    1. Функция сортировки элементов

Сортируются массивы внутри списков, по возрастанию. Для этого были написаны несколько закрытых методов класса. Первая функция Changeменяет элементы местами, функцияFindMaxищет в массиве максимальный элемент, а функцияSortсортирует переданный в неё массив.

template <class T>

void Array<T>::Change(T a[], T first, T second)

{

if (first == second)

return;

T i;

i = a[second];

a[second] = a[first];

a[first] = i;

}

template <class T>

T Array<T>::FindMax(T a[], int max)

{

T imax = 0;

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

{

if (a[imax] < a[i])

imax = i;

}

return imax;

}

template <class T>

void Array<T>::Sort(T b[], int max)

{

int i1;

for (int i = max - 1; i > 0; i--)

{

i1 = FindMax(b, i);

Change(b, i, i1);

}

}

template <class T>

void Array<T>::SortALL()

{

ListElem<T> *cur=0;

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

{

cur = Arr[i];

while(cur!=NULL)

{

Sort(cur->objects,cur->countObj);

cur=cur->pNext;

}

}

}

    1. Функция вывода массива указателей и списков на экран

template <class T>

void Array<T>::ShowAll()

{

ListElem<T> *cur=0;

ListElem<T> *pcur=0;

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

{

cout<<" <<< Next Pointer-> >>> \n";

cur = Arr[i];

pcur = Arr[i];

while(cur!=NULL)

{

cout<<"Elem=";

for(int j=0; j<cur->countObj; j++)

{

cout<<cur->objects[j]<<" ";

}

cout<<"\n <<< Next list-> >>> \n";

cur=cur->pNext;

}

cout<<endl;

cout<<endl;

cout<<endl;

cout<<endl;

}

}

    1. Функция добавления элемента по позиции

Элемент добавляется в указанную пользователем позицию, т.к. нумерация списков считается сквозной. Если позиция, которую указал пользователь слишком большая, то элемент просто добавляется в конец уже имеющегося списка.

template <class T>

void Array<T>::AddElem(int position)

{

int index = 0;

while (position>MaxCount)

{

index++;

position-=MaxCount;

}

ListElem<T>*pcur=Arr[index];

if (pcur==NULL)

{

int count=0;

cout<<"Enter count of elements=";

cin>>count;

if (count<=0)

{

cout<<"Non of elements"<<endl;

return;

}

ListElem<T> *NewElem = new ListElem<T>;

NewElem->countObj=count;

NewElem->objects=new T[count];

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

{

cout<<"Enter element=";

cin>>NewElem->objects[i];

}

Arr[index]=NewElem;

NewElem->pNext=NULL;

CurSize++;

return;

}

if (index>=ArrSize)

{

AddElem();

return;

}

if (IsListFull(index))

{

if(index==MaxCount)

{

ListElem<T> *pcur=0;

for(pcur;pcur->pNext!=NULL;pcur=pcur->pNext);

int count=0;

cout<<"Enter count of elements=";

cin>>count;

if (count<=0)

{

cout<<"Non of elements"<<endl;

return;

}

ListElem<T> *NewElem = new ListElem<T>;

NewElem->countObj=count;

NewElem->objects=new T[count];

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

{

cout<<"Enter element=";

cin>>NewElem->objects[i];

}

pcur->pNext=NewElem;

NewElem->pNext=NULL;

CurSize++;

return;

}

}

if (position==1)

{

int count=0;

cout<<"Enter count of elements=";

cin>>count;

if (count<=0)

{

cout<<"Non of elements"<<endl;

return;

}

ListElem<T> *NewElem = new ListElem<T>;

NewElem->countObj=count;

NewElem->objects=new T[count];

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

{

cout<<"Enter element=";

cin>>NewElem->objects[i];

}

ListElem<T> *cur=Arr[index];

NewElem->pNext=cur->pNext;

Arr[index]=NewElem;

CurSize++;

return;

}

else

{

int count=0;

cout<<"Enter count of elements=";

cin>>count;

if (count<=0)

{

cout<<"Non of elements"<<endl;

return;

}

ListElem<T> *NewElem = new ListElem<T>;

NewElem->countObj=count;

NewElem->objects=new T[count];

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

{

cout<<"Enter element=";

cin>>NewElem->objects[i];

}

ListElem<T>*cur=Arr[index];

ListElem<T>*pcur=Arr[index];

count=0;

for(cur,pcur;cur!=NULL && count<position-2;)

{

count++;

cur=cur->pNext;

pcur=pcur->pNext;

}

if (cur==NULL)

{

pcur->pNext=NewElem;

CurSize++;

return;

}

else

{

NewElem->pNext=cur->pNext;

pcur->pNext=NewElem;

CurSize++;

return;

}

}

}

Соседние файлы в папке курсовая docx100