
- •1 Семестр
- •18 Занятий
- •1. Линейные и разветвляющиеся алгоритмы
- •Вычисления по формулам. Стандартные математические функции
- •Побитовые операции
- •Область на плоскости
- •Условный оператор
- •Логическое выражение в условном операторе
- •Ветвления
- •2. Циклы
- •Целочисленная арифметика. Приведение типов
- •Вложенные циклы. Схема Горнера
- •2.3. Перебор значений
- •2.4. Итерационные циклы. Вычисления с точностью
- •2.5. Нахождение простых чисел
- •2.6. Вычисления без хранения последовательности значений
- •Массивы. Указатели
- •Обработка одномерных массивов
- •Построение новой матрицы по части заданной матрицы
- •Обход матрицы
- •Упорядоченность значений в матрицах
- •Алгоритм Эратосфена для нахождения простых чисел
- •Преобразование матриц
- •*** Использование массивов для представления «длинных» чисел
- •*** Экономичное хранение матриц. Матричная алгебра
- •Строки. Структуры
- •Использование строкового типа
- •Перевод из одной cистемы счисления в другую
- •Выделение слов в строке
- •Массив слов
- •Создание собственных процедур для обработки строк
- •Функции
- •5.1. Передача параметров по значению и по ссылке
- •5.2. Перегрузка и шаблон функций
- •5.3. Возврат ссылок
- •5.4. Рекурсия
- •5.5. *** Перебор с возвратом
- •2 Семестр (15 занятий)
- •5.6. Вычисление корня уравнения. Передача имени функции в качестве параметра. Аргументы по умолчанию
- •5.7. Вычисление интеграла. Передача имени функции в качестве параметра
- •5.8. Сортировка массивов
- •5.9. *** Сортировка массивов
- •6. Файлы
- •6.1. Использование структур для битового представления чисел
- •6.2. Файлы чисел
- •6.3. Файлы записей
- •7. Динамические структуры данных
- •7.1. Динамическое выделение памяти для массивов
- •7.2. Линейный список
- •7.3. Линейные списки
- •7.4. Двухсвязные списки
- •7.5. Деревья
- •7.6. *** Более сложные связанные динамические структуры данных
- •7.7. *** Графы
- •8.1. Класс «Многоразрядное число»
- •8.2 Класс «Массив»
- •8.3 Класс «Линейный список»
- •8.4. *** Класс «Двусвязный список»
- •8.5 *** Класс «Бинарное дерево»
- •8.6 *** Класс «Граф»
- •Наследование. Полиморфизм
- •9.1. Наследование
- •9.2. Полиморфизм. Виртуальные методы
- •9.3. *** Полиморфизм. Виртуальные методы
7.7. *** Графы
Создать подходящий тип данных для представления графа. Написать и протестировать процедуры обеспечивающие добавление вершины в граф, вывода элементов графа на экран, выполнить следующие задания.
Найти все вершины заданного графа, недостижимые от заданной его вершины.
Определить, что для любой пары вершин заданного орграфа одна из этих вершин достижима от другой.
Определить, является ли связным заданный граф.
Найти длину кратчайшего цикла в графе.
Для двух выделенных вершин графа построить соединяющий их простой путь.
Найти самый длинный простой путь в графе.
Найти все вершины графа, к которым существует путь заданной длины от выделенной его вершины.
Найти все вершины орграфа, от которых существует путь заданной длины к выделенной вершине.
Источником орграфа назовем вершину, от которой достижимы все другие вершины; стоком – вершину, достижимую от всех других вершин. Найти все источники и стоки данного орграфа.
Найти такую вершину заданного графа, которая принадлежит каждому пути между двумя выделенными (различными) вершинами и отлична от каждой из них.
Найти диаметр графа, т. е. максимум расстояний между всевозможными парами его вершин.
Найти медиану графа, т. е. такую его вершину, что сумма расстояний от нее до остальных вершин минимальна.
Классы
8.1. Класс «Многоразрядное число»
8.1.1. Объявить класс для решения задачи и определить его методы.
Реализовать:
три вида конструктора (без аргументов, инициализации, копирования),
деструктор,
ввод данных с клавиатуры,
вывод данных на экран,
указанные в задании операции реализовать посредством перегрузки операций (операции реализовать и как методы класса, и как внешние дружественные функции).
Объявление класса разместить в заголовочном файле, определения методов – во втором файле, определение главной функций программы – в третьем файле. Выполнить задание, используя объекты этого класса.
Дополнительно к требуемым в заданиях операциям перегрузить операцию индексирования []. Максимально возможный размер массива задать константой. В отдельном поле size должно храниться максимальное для данного объекта количество элементов массива; реализовать метод get_size(), возвращающий установленную длину. Если количество элементов массива изменяется во время работы, определить в классе поле count. Первоначальные значения size, count устанавливаются конструктором. Обеспечить работу с безопасным массивом, т.е. контролировать выход индекса элемента массива за допустимый описанием объекта диапазон.
Объявить класс «128-разрядное целое положительное десятичное число». Реализовать операции: сложения, умножения этих чисел.
Объявить класс «128-разрядное целое положительное десятичное число. Реализовать операции: сравнения, сдвигов на n разрядов (десятичных).
Объявить класс «256-разрядное целое положительное десятичное число. Реализовать операции: сложения, умножения этих чисел.
Объявить класс «256-разрядное целое положительное десятичное число». Реализовать операции: сравнения, сдвигов на n разрядов (десятичных).
Объявить класс «64-разрядное целое двоичное число со знаком». Реализовать операции: сложения, умножения. Создать методы для перевода десятичного числа в двоичное, и наоборот.
Объявить класс «64-разрядное целое положительное двоичное число». Реализовать операции: сравнения, сдвигов на n разрядов, поразрядные. Создать методы для перевода десятичного числа в двоичное, и наоборот.
Объявить класс «128-разрядное целое двоичное число со знаком». Реализовать операции: сложения, умножения. Создать методы для перевода десятичного числа в двоичное, и наоборот.
Объявить класс «128-разрядное целое положительное двоичное число». Реализовать операции: сравнения, сдвигов на n разрядов, поразрядные. Создать методы для перевода десятичного числа в двоичное, и наоборот.
Объявить класс «64-разрядное целое шестнадцатиричное положительное число». Реализовать операции: сложения, умножения. Создать методы для перевода десятичного числа в шестнадцатиричное, и наоборот.
Объявить класс «64-разрядное целое шестнадцатиричное положительное число». Объявить класс «256-разрядное целое положительное двоичное число». Реализовать операцию сложения для тех и других чисел. Создать методы для перевода двоичного числа в шестнадцатиричное, и наоборот.
Объявить класс «64-разрядное целое положительное число в p-ричной с/с (2≤p≤16)». Реализовать операции: сложения, умножения. Создать методы для перевода десятичного числа в р-ричное и наоборот.
Объявить класс «64-разрядное целое положительное число в p-ричной с/с (2≤p≤16)». Реализовать операции: сравнения, сдвигов на n разрядов. Создать методы для перевода десятичного числа в р-ричное и наоборот.
8.1.2. Реализовать задание, используя объявление и методы соответствующего параметризированного класса из стандартной библиотеки шаблонов STL.