
- •Задача №1. Обобщенное программирование
- •Библиотека для работы со списками (2 студента, максимум – 100 баллов)
- •Библиотека работы с множествами (2 студента, максимум – 100 баллов)
- •Библиотека работы с ассоциативными множествами (2 студента, максимум – 100 баллов)
- •Библиотека работы со стеками и очередями (2 студента, максимум – 100 баллов)
- •Класс Matrix, описывающий матрицы в алгебре (2 студента, максимум – 100 баллов)
- •Класс Sorts, реализующий различные виды сортировок (1 студент – максимум 80 баллов; 2 студента, максимум – 40 баллов)
- •Библиотека для сохранения/чтения объектов в типизированный (в терминах языка Pascal) файл / из файла (2 студента, максимум 100 баллов)
- •Более простые задачи на работу с коллекциями из System.Collections.Generic (1 студент на задачу, максимум 40 баллов).
Класс Matrix, описывающий матрицы в алгебре (2 студента, максимум – 100 баллов)
Разработать обобщенный класс Matrix<T> – матрица произвольных чисел:
Matrix<T>
методы:
static Matrix<T> FromArray(T[,] array);
свойства:
int Width;
int Height;
T this[int wIndex, int hIndex];
IMathCalculator<T> MathCalculator;
операторы
static Matrix<T> operator +(Matrix<T> m1, Matrix<T> m2);
static Matrix<T> operator -(Matrix<T> m1, Matrix<T> m2);
static Matrix<T> operator *(Matrix<T> m1, Matrix<T> m2);
static Matrix<T> operator /(Matrix<T> m1, Matrix<T> m2);
и др.
MatrixException – класс, описывающий исключения, которые могут происходить в ходе работы c классом Matrix<T>;
IMathCalculator<T> – интерфейс выполнения математических операций над типом Т
методы:
T Add(T n1, T n2);
T Sub(T n1, T n2);
T Mul(T n1, T n2);
T Div(T n1, T n2);
и др.
Complex: IMathCalculator<Complex> – структура, описывающая коплексные числа;
Также необходимо разработать серию примеров, демострирующих основные аспекты работы с классом Matrix, как минимум, для типов double и Complex, а также самого Matrix<T> (т.е. для матрицы матриц).
Класс Graph<N, L>, описывающий графы (2 студента, максимум – 100 баллов)
Разработать обобщенный класс Graph<V, E> – класс для описания графов (V – тип вершин, от Vertex; E – тип связей, от Edge).
Класс должен поддерживать базовые алгоритмы на графах (обход графа в глубину, обход графа в ширину, поиск кратчайшего пути и т.п.)
Класс Sorts, реализующий различные виды сортировок (1 студент – максимум 80 баллов; 2 студента, максимум – 40 баллов)
Разработать обобщенный класс для сортировки массивов.
SortUtils
методы
QuickSort<T>(T[] array, CompareDelegate<T> comparator);
QuickSort<T>(T[] array) where T: Comparable<T>;
Методы, реализующие другие типы сортировок.
Библиотека для работы с деревьями (1 студент, максимум 100 баллов; 2 студента – максимум 70 баллов)
Разработать обобщенный класс Tree<T> и сопутсвующие классы, описывающеее дерево с произвольным числом потомков в каждом узле:
Node<T>
методы:
void Add(Node<T> node);
void Add(T value);
int Remove(Node<T> node) – возвращает количество удаленных элементов;
int Remove(T node) – возвращает количество удаленных элементов;
void Clear();
void SortNodes(CompareDelegate<T>);
свойства
int ChildCount;
Node<T> Parent;
Tree<T> Tree;
bool isEmpty;
Tree<T>: Node<T>
методы
ForEach(WalkType type, ActionDelegate<Node<T>>);
ForEach(WalkType type, ActionDelegate<T>);
WalkType = (PreOrder, InOrder, PostOrder, BreadthFirst) – (сверху вниз, слева направо, снизу вверх, в ширину);
TreeException – класс, описывающий исключения, которые могут происходить в ходе работы c деревом.