Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Task1.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
84.99 Кб
Скачать
  1. Класс 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> (т.е. для матрицы матриц).

  1. Класс Graph<N, L>, описывающий графы (2 студента, максимум – 100 баллов)

Разработать обобщенный класс Graph<V, E> – класс для описания графов (V – тип вершин, от Vertex; E – тип связей, от Edge).

Класс должен поддерживать базовые алгоритмы на графах (обход графа в глубину, обход графа в ширину, поиск кратчайшего пути и т.п.)

  1. Класс 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 деревом.

  • Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]