Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовая по ООП2 / prj5 / prj5 / Array
.h// Array.h: interface for the Array class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_ARRAY_H__14BCA4A0_4C62_4452_9475_FAAA0285ADFA__INCLUDED_)
#define AFX_ARRAY_H__14BCA4A0_4C62_4452_9475_FAAA0285ADFA__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <iostream.h>
#include <assert.h>
template<class T> class Array
{
private:
T *elements; // Элементы массива
int size; // Размер массива
public:
Array(int = 10); // Размер по умолчанию = 10
~Array();
void insertSorted(T); // Вставка элемента в массив с сохранением его упорядоченности. Самый большой элемент теряется
void sort(); // Сортировка массива
void readElements(); // Ввести элементы массива с клавиатуры
void writeElements(); // Вывести элементы массива на экран
T& operator [](int index); // Обращение к элементу по индексу
};
template<class T> Array<T>::Array(int size)
{
this->size = size;
elements = new T[size];
}
template<class T> Array<T>::~Array()
{
delete [] elements;
}
template<class T> void Array<T>::writeElements()
{
// Выводим элементы на экран
for(int i = 0; i < size; i++){
cout << elements[i] << "; ";
}
cout << endl;
}
template<class T> void Array<T>::readElements()
{
// Считываем значения элементов
for(int i = 0; i < size; i++){
cout << "[" << i << "]: ";
cin >> elements[i];
}
}
template<class T> void Array<T>::sort()
{
// Используем пузырьковую сортировку
for(int i = size - 1; i > 0; i--)
for(int j = 0; j < i; j++)
if(elements[j] > elements[j + 1]) {
// меняем два соседних элемента местами
T tmp = elements[j];
elements[j] = elements[j + 1];
elements[j + 1] = tmp;
}
}
template<class T> T& Array<T>::operator [](int index)
{
// Проверка выхода индекса из диапазона
assert(0 <= index && index < size);
return elements[index]; // Возвращаем ссылку на элемент.
// Ссылку можно использовать и в левой части оператора присваивания
}
template<class T> void Array<T>::insertSorted(T el)
{
// Ищем место для элемента, заодно раздвигаем массив
for(int i = size - 1; i > 0; i--) {
elements[i] = elements[i - 1];
if(elements[i] <= el)
break;
}
elements[i] = el;
}
#endif // !defined(AFX_ARRAY_H__14BCA4A0_4C62_4452_9475_FAAA0285ADFA__INCLUDED_)