С++ 2–е издание.: Второе издание. - М.:Бином,1998
Роберт Седжвик. Фундаментальные алгоритмы на С++. – СПб.: ООО «ДиаСофтЮП», 2002. – 688 с.
Томас Кормен. Алгоритмы. Построение и анализ. , 1990. – 892 с.
Джесс Либерти. Освой самостоятельно С++ за 21 день, 4-е издание.: Пер. с англ. — «Вильямс», 2001. – 832 с.
Герберт Шилдт. Справочник программиста по С/С++, 3–е издание.: Пер. с англ. — «Вильямс», 2003. – 432 с.
Страуструп Б. Язык программирования С++.Третье издание, М.:Бином,1999.
Шилдт Г. Теория и практика С++.-СПб.:BHV,1996.
Джефф Элджер. Бибиотека программиста C++
Фейсон Т. Объектно-ориентированное программи-рование на С++. – К.: Диалектика, 1996. – 391 с.
Пол Айра Объектно-ориентированное программиро-вание на С++. 2-е издание – М.: Бином, 1999. – 295 с.
Лафоре Р. Объектно-ориентированное программирова-ние в С++. 4-е издание – М., 2004. – 924 с.
Курсові роботи з дисципліни “Об’єктно-орієнтоване програмування”. Методичні вказівки і завдання для студентів факультету автоматизації і комп’ютерних наук/ Федорак Р.М., - Івано-Франківськ : ІФНТУНГ, 2005.- 43 с.
Шилдт Г. Полный справочник по С++, 4-е изадние.: Пер. с англ. – М.: Издательский дом “Вильямс”, 2006. – 800 с.
Прата Стивен Язык программирования С++. Лекции и уражнения. Platinum Edition: Пер. с англ./ Стивен Прата – М.: ООО “ДиаСофт”, 2005. – 1104 с.
Кейт Грегори Использование Visual C++ 6. Специальное издание.: Пер. с англ. – М.; СПб.; К.: Издательский дом “Вильямс”, 2003. – 864 с.
Олафсен Юджин MFC и Visual C++ 6. Энциклопедия программиста: Пер. с англ./ Юджин Олафсен, - СПб.: ООО “ДиаСофт”, 2004. – 992 с.
Паппас К. Эффективная работа: Visual C++. – СПб.: Питер, 2002. – 816 с.
Овчинников П.П. Вища математика: Підручник. У 2 ч. Ч. 1: Лінійна і векторна алгебра. – К.: Техніка, 2000. – 592 с.
Дубовик В.П. Вища математика: Збірник задач: Навч. посібник. – К.: А.С.К., 2001. – 480 с.
СТП 02070855-03-99. Курсовий і дипломний проект. Вимоги до змісту і оформлення.
Мальцев А. И. Основы линейной алгебры. М.: Наука, 1975.
Гельфанд И. М. Лекции по линейной алгебре М.: Наука, 1971.
Фаддеев Д. К. Лекции по алгебре. М.: Наука, 1984.
Кострикин А. И. Введение в алгебру, М.: Наука, 1977.
В.А. Ильин, Э.Г. Позняк Линейная алгебра, М.: Наука - Физматлит, 1999.
Беклемишев Д.В. Аналитическая геометрия и линейная алгебра.-М.: Высш. шк. 1998, 320с.
Беклемишев Д.В. Дополнительные главы линейной алгебры.-М.:Наука 1983, 336с.
Булдырев В.С., Павлов Б.С. Линейная алгебра и функции многих переменных.-Л.:ЛГУ 1985, 496с.
ДОДАТОК А
Лістинг 1. Файл iface.h — Абстрактний інтерфейс класу
#pragma once
#include <objbase.h>
template <class T>
interface IVector
{
//size - кількість елементів вектора;
virtual size_t size()const = 0;
//front - посилання на перший елемент;
virtual T front() = 0;
//back - посилання на останній елемент;
virtual T back() = 0;
//insert - уставити елемент у надану позицію;
virtual void insert(const T&, size_t position) = 0;
//push_back - додати новий елемент у кінець вектора;
virtual void push_back(const T&) = 0;
//pop_back - вилучити останній елемент;
virtual void pop_back() = 0;
//erase - вилучити елемент у наданій позиції;
virtual void erase() = 0;
//find - знайти елемент у векторі і повернути його позицію;
virtual size_t find(const T& value) = 0;
//accumulate - накопичення суми або добутку;
// 1(true) = сума 0(false) = добуток
virtual T accumulate(bool) = 0;
//for_each - обробка елементів по наданій процедурі;
virtual void for_each() = 0;
//max , min - пошук максимального та мінімального елементів;
virtual T maximum() = 0;
virtual T minimum() = 0;
//sort - упорядкування елементів у порядку зростання або зменшення.
virtual void sort(bool) = 0;
};
Лістинг 2. Файл Vector.h — Інтерфейс класу
#pragma once
#include <iostream>
#include <exception>
#include "iface.h"
#include "strvalues.h"
#include <vector>
using namespace std;
#define DEFAULT_SIZE 10
template<class T>
class Vector: public IVector<T>
{
public:
Vector();
Vector(size_t);
Vector(Vector&);
~Vector();
///
/// IVector
///
//size - кількість елементів вектора;
size_t size()const;
//front - посилання на перший елемент;
T front();
//back - посилання на останній елемент;
T back();
//insert - уставити елемент у надану позицію;
void insert(const T&, size_t position);
//push_back - додати новий елемент у кінець вектора;
void push_back(const T&);
//pop_back - вилучити останній елемент;
void pop_back();
//erase - вилучити елемент у наданій позиції;
void erase();
//find - знайти елемент у векторі і повернути його позицію;
size_t find(const T& value);
//accumulate - накопичення суми або добутку;
// 1(true) = сума 0(false) = добуток
T accumulate(bool);
//for_each - обробка елементів по наданій процедурі;
void for_each();
//max , min - пошук максимального та мінімального елементів;
T maximum();
T minimum();
//sort - упорядкування елементів у порядку зростання або зменшення.
void sort(bool az = true);
//swap - обмін значеннями з іншим вектором;
void swap(Vector& rhs);
//доступу до елемента, символ "[]" ;
T& operator [] (size_t offset);
const T& operator [] (size_t offset)const;
//присвоєння, символ "=" ;
Vector& operator = (const Vector& rhs);
//конкатенації, символ "+" ;
//Vector operator + (Vector& rhs);
//конкатенації і присвоєння, символ "+=" ;
void operator += (const Vector& rhs);
//введення із файлу, символи "<<" ;
friend ostream & operator << <T>(ostream & output, const Vector<T> & list);
//виведення у файл, символи ">>" ;
friend istream & operator >> <T>(istream & input, Vector<T> & list);
//порівняння, символі "==" , "!=" .
bool operator == (const Vector& rhs);
bool operator != (const Vector& rhs);
private:
void Initialize();
void Initialize(size_t size);
void Dispose();
vector<T> m_array;
};
Лістинг 3. Файл Vector.cpp — Реалізація класу
#include "StdAfx.h"
#include "Vector.h"
#include "strvalues.h"
#include <algorithm>
#include <functional>
template<class T>
Vector<T>::Vector(void)
{
}
template<class T>
Vector<T>::Vector(size_t size)
{
m_array.resize(size);
}
template<class T>
Vector<T>::~Vector(void)
{
m_array.clear();
}
///
/// IVector
///
//size - кількість елементів вектора{}
template<class T>
size_t Vector<T>::size()const
{
return m_array.size();
}
//front - посилання на перший елемент{}
template<class T>
T Vector<T>::front()
{
return *m_array.begin();
}
//back - посилання на останній елемент{}
template<class T>
T Vector<T>::back()
{
return *m_array.end();
}
//insert - уставити елемент у надану позицію{}
template<class T>
void Vector<T>::insert(const T& value, size_t position)
{
m_array.insert(m_array.begin() + position, value);
}
//push_back - додати новий елемент у кінець вектора{}
template<class T>
void Vector<T>::push_back(const T& value)
{
m_array.push_back(value);
}
//pop_back - вилучити останній елемент{}
template<class T>
void Vector<T>::pop_back()
{
m_array.pop_back();
}
//erase - вилучити елемент у наданій позиції{}
template<class T>
void Vector<T>::erase()
{
m_array.clear();
}
//find - знайти