Скачиваний:
63
Добавлен:
01.05.2014
Размер:
2.38 Кб
Скачать
// 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_)
Соседние файлы в папке prj5
  • #
    01.05.20142.38 Кб63Array.h
  • #
    01.05.20141.54 Кб63prj5.cpp
  • #
    01.05.20144.57 Кб63prj5.dsp
  • #
    01.05.2014533 б63prj5.dsw
  • #
    01.05.201458.37 Кб63prj5.ncb
  • #
    01.05.201449.66 Кб63prj5.opt