Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задачи на курсовой проект.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
143.87 Кб
Скачать

Задачи на курсовой проект 2014.

Задача 1. Дано некоторое количество красных и столько же синих точек - соединить их попарно (красная-синяя) так, чтобы суммарная длина отрезков была минимальна.

Координаты точек - вводит пользователь. Количество точек может быть любым, его также задает пользователь. После расчетов рисуются отрезки, сумма которых будет минимальна и выводятся пары точек, соответствующие этим отрезкам.

Пример интерфейса программы:

Задача 2. Разработать программу для нахождения максимального потока в сети (алгоритм Форда-Фолкерсона). Пользователь может задавать количество стоков, количество конечных станций, количество промежуточных узлов. Также пользователь может задавать пропускную способность каждого канала. После расчета выводится матрица решений, нагрузка на каждый из узлов сети, общий результат.

Пример интерфейса программы:

Задача 3. Разработать программу для поиск цикла Эйлера в графе. Координаты точек - вершин графа вводит пользователь. Количество вершин может быть любым.

Пользователь заполняет матрицу смежности, если ребро есть - 1, если нет - пусто. Проверяется условие существований цикла Эйлера в графе. Если цикл существует(т.е можно обойти граф пройдя все ребра только по одному разу и закончить в той же вершине, в которой начал), то собственно и происходит обход графа. Ребра закрашиваются красным цветом, последовательность вершин выводится. Начальную вершину вводит пользователь.

Пример интерфейса программы:

Задача 4. Разработать программу для поиска кратчайшего пути в графе. Координаты точек - вершин графа вводит пользователь. Количество вершин может быть любым.

Пользователь заполняет матрицу смежности значениями весов ребер. Узлы графа рисуются синими точками, ребра - зелеными отрезками. Кратчайший путь в графе ищется полным перебором. Найденный путь выделяется красным цветом, выводится последовательность вершин пути и его длина.

Пример интерфейса программы:

Задача 5. Разработать программу для Хэш-таблицы с открытой адресацией. Хэш-таблица реализовать в виде класса. Программа должна выполнять все стандартные операции - добавление, удаление, поиск элемента. Предусмотреть возможность выбирать коэффициент хэширования.

Таблица может быть любого размера. Исключительные ситуации (переполнение, удаление из пустой таблицы) должны обрабатываться.

Пример интерфейса программы:

Задача 6. Разработать программу для Хэш-таблицы с цепочками. Хэш-таблица реализовать в виде класса. Программа должна выполнять все стандартные операции - добавление, удаление, поиск элемента. Предусмотреть возможность выбирать коэффициент хэширования. Таблица может быть любого размера. Исключительные ситуации (переполнение, удаление из пустой таблицы) должны обрабатываются

Пример интерфейса программы:

Задача 7. Разработать программу для Игра "Крестики-нолики". Реализовать два варианта игры - человек с человеком и человек с компьютером. Компьютер играет по системе, нацелен на выигрыш.

Выигрывает тот, кто первым выстроит линию из 5 крестиков или ноликов. Размер поля можно выбирать любой. Выигрышная комбинация закрашивается другим цветом.

Пример интерфейса программы:

Задача 8. Разработать программу для реализация стека указателей на объект. Стек реализовать как отдельный класс, предусмотреть все характерные операции. В качестве содержимого стека используется структура. Все операции полностью визуализировать.

Задача 9. Разработать программу для реализация очереди указателей на объект. Очередь реализовать как отдельный класс, предусмотреть все характерные операции. В качестве содержимого очереди используется структура. Все операции полностью визуализировать.

Задача 10. Разработать объектно-ориентированную библиотеку для работы со строками. Компонент класса - символьная строка. Реализовать операцию замены местами первого и последнего слова строки. Реализовать следующие операции:

  • конкатенация строк при помощи перегруженного оператора +

  • присваивание строк при помощи перегруженного оператора =

  • сравнение строк при помощи перегруженных операторов <, > и = =

Реализовать перегрузку операции -- (b=a--). Составить тесты для проверки работоспособности библиотеки. Составить программу, демонстрирующую возможности разработанной библиотеки.

Постановка задачи № 11.

Задача состоит в разработке прототипа электронной телефонной книжки.

Задание

Разработать класс для представления и обработки записи в телефонной книжке. Продумайте формат представления списка телефонных номеров таким образом, чтобы имелась возможность идентифицировать различные типы номеров; домашний, служебные, мобильные и т.п. Разработайте программу, считывающую из предварительно подготовленного файла сведения о записях в телефонной книжке. Прочитанные сведения сохраняются в линейном двунаправленном списке с обеспечением упорядоченности по именам абонентов.

Реализуйте метод для поиска телефонного номера по имени абонента.

Класс для представления и обработки линейного двунаправленного списка определите самостоятельно.

Постановка задачи № 12

Во многих странах успешно используется системы автоматизации получения пассажирами различного рода информации, связанной с транспортной инфраструктурой. Рассмотрим модель пользовательского терминала на железнодорожном вокзале. Пассажир имеет возможность ввести наименования станций отправления и назначения, а также сформулировать критерии поиска: наиболее быстрый способ доехать, наиболее дешёвый способ доехать до указанной станции.

Разработать программу, частично моделирующую функциональность подобного терминала. Предположим, что исходными данными является расписание движения поездов, сформулированное для множества станций, составляющих железнодорожную сеть. Расписание движения отдельного поезда представляет собой перечисление остановочных пунктов, для каждого из которых задано время отправления и стоимость проезда до следующего пункта. Для простоты модели будем считать, что время отправления и время прибытия поездов совпадают, а стоимость проезда по маршруту определяется как сумма стоимостей на перегонах.

Задание

Разработайте класс для представления и обработки информации о расписании движения поезда. Разработайте программу, считывающую из предварительно подготовленного файла информацию о расписании и обеспечивающую вычисление стоимости проезда на заданном перегоне.

Информации о расписании организуйте в форме одномерного массива записей соответствующего типа.

Постановка задачи №13

Задание моделирует определение нового числового типа и реализацию механизмов обработки наборов данных этого типа.

Задание

Создайте класс Rational, воплощающий абстракцию рациональных чисел, представляемых в виде дробей с числителем (numerator) и знаменателем (denominator). Инкапсулируйте в классе Rational функции-члены класса, реализующие основные действия над рациональными числами (сложение, вычитание, умножение и деление). Не забудьте о необходимости сокращения дробей в ходе вычислений. Определите функцию печати рационального числа. Продумайте способ задания рационального числа, представляемого переменными-членами класса (нужно ли ограничить доступ к ним извне?).

Усовершенствуйте класс Rational, обеспечив реализацию следующей функциональности:

  • Инициализация рационального числа значением целого типа;

  • Перегруженные арифметические операции для выполнения основных арифметических действий над рациональными числами, а также операции сравнения;

  • Перегруженные операции >> и << для ввода и вывода рациональных чисел;

  • Преобразование рационального числа в строковое представление;

  • Преобразование из типа Rational к типу double;

  • метод toString, обеспечивающий преобразование рационального числа в строку символов.

Продумайте как организовать обработку ошибок при выполнении некорректных операций с объектами класса Rational. Что это за некорректные операции?

Создайте класс, реализующий концепцию контролируемого массива (вектора) рациональных чисел. Создайте точные и непротиворечивые спецификации разработанных Вами классов.

Спроектируйте комплект тестирующих программ для проверки разработанных классов.