Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Задание_на_курсовую_работу

.pdf
Скачиваний:
16
Добавлен:
12.04.2015
Размер:
303.2 Кб
Скачать

Задание на курсовую работу По Объектно-ориентированному программированию

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

Требования к оформлению.

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

При оформлении необходимо исходить из следующих параметров:

текст печатается на листах формата А4;

шрифт основного текста – Times New Roman;

шрифт исходного кода – Courier New;

размеры полей: левое –3 см, верхнее – 2 см, правое – 2 см и нижнее – 2 см;

размер шрифта основного текста – 12; интервал – 1,5;

размер шрифта исходного кода – 10; интервал – 1;

размер текста сносок – 11, интервал – 1;

заголовки печатаются жирным шрифтом 14-ым размером, перед ними следует оставить пустую строку;

подзаголовки печатаются жирным шрифтом 12-ым размером; нумерация страниц – внизу по центру.

ЗАДАНИЕ №1. - КЛАССЫ

1.Создать абстрактный тип данных - класс вектор, который в качестве параметров имеет указатель на int, число элементов и переменную состояния. Определить конструктор без параметров, конструктор с параметром, конструктор с двумя параметрами. Конструктор без параметров выделяет место для одного элемента и инициализирует его в ноль. Конструктор с одним параметром, - размер вектора, - выделяет место и инициализирует номером в массиве, конструктор с двумя параметрами выделяет место (первый аргумент) и инициализирует вторым аргументом. Деструктор освобождает память. Определить функцию, которая присваивает элементу массива некоторое значение (параметр по умолчанию), функцию, которая получает некоторый элемент массива. В переменную состояния устанавливать код ошибки, когда не хватает памяти, выходит за пределы массива. Определить функцию вывода на

экран. Определить функции сложения, умножения, вычитания, которые производят эти арифметические операции с данными этого класса и встроенного int. Определить методы сравнения: больше, меньше, равно. Предусмотреть возможность подсчета числа объектов данного типа. Проверить работу этого класса.

2.Создать абстрактный тип данных - класс вектор, который в качестве параметров имеет указатель на float, число элементов и переменную состояния. Определить конструктор без параметров, конструктор с параметром, конструктор с двумя параметрами. Конструктор без параметров выделяет место для одного элемента и инициализирует его в ноль. Конструктор с одним параметром, - размер вектора, - выделяет место

иинициализирует номером в массиве, конструктор с двумя параметрами выделяет место (первый аргумент) и инициализирует вторым аргументом. Деструктор освобождает память. Определить функцию, которая присваивает элементу массива некоторое значение (параметр по умолчанию), функцию, которая получает некоторый элемент массива. В переменную состояния устанавливать код ошибки, когда не хватает памяти, выходит за пределы массива. Определить функцию вывода на экран. Определить функции сложения, умножения, вычитания, которые производят эти арифметические операции с данными этого класса и встроенного float. Определить методы сравнения: больше, меньше, равно. Предусмотреть возможность подсчета числа объектов данного типа. Проверить работу этого класса.

3.Создать абстрактный тип данных - класс вектор, который в качестве параметров имеет указатель на double, число элементов и переменную состояния. Определить конструктор без параметров, конструктор с параметром, конструктор с двумя параметрами. Конструктор без параметров выделяет место для одного элемента и инициализирует его в ноль. Конструктор с одним параметром, - размер вектора, - выделяет место

иинициализирует номером в массиве, конструктор с двумя параметрами выделяет место (первый аргумент) и инициализирует вторым аргументом. Деструктор освобождает память. Определить функцию, которая присваивает элементу массива некоторое значение (параметр по умолчанию), функцию, которая получает некоторый элемент массива. В переменную состояния устанавливать код ошибки, когда не хватает памяти, выходит за пределы массива. Определить функцию вывода на экран. Определить функции сложения, умножения, вычитания, которые производят эти арифметические операции с данными этого класса и встроенного double. Определить методы сравнения: больше, меньше, равно. Предусмотреть возможность подсчета числа объектов данного типа. Проверить работу этого класса.

4.Создать абстрактный тип данных - класс вектор, который в качестве параметров имеет указатель на long, число элементов и переменную состояния. Определить конструктор без параметров, конструктор с

параметром, конструктор с двумя параметрами. Конструктор без параметров выделяет место для одного элемента и инициализирует его в ноль. Конструктор с одним параметром, - размер вектора, - выделяет место и инициализирует номером в массиве, конструктор с двумя место (первый аргумент) и инициализирует вторым параметрами выделяет аргументом. Деструктор освобождает память. Определить функцию, которая присваивает элементу массива некоторое значение (параметр по умолчанию), функцию, которая получает некоторый элемент массива. В переменную состояния устанавливать код ошибки, когда не хватает памяти, выходит за пределы массива. Определить функцию вывода на экран. Определить функции сложения, умножения, вычитания, которые производят эти арифметические операции с данными этого класса и встроенного long. Определить методы сравнения: больше, меньше, равно. Предусмотреть возможность подсчета числа объектов данного типа. Проверить работу этого класса.

5.Создать класс матрица Данный класс содержит указатель на double, размер строк и столбцов и состояние ошибки. Определить конструктор без параметров, конструктор с одним параметром и конструктор с двумя параметрами, деструктор. Определить методы доступа: возвращать значение элемента (i,j) и адрес этого элемента. Определить функцию вывода на экран. Определить функции сложения и вычитания (матрицы с матрицей), умножение матрицы на матрицу. Определить функцию умножения матрицы на число. Проверить работу этого класса. В случае нехватки памяти, несоответствия размерностей, выхода за пределы устанавливать код ошибки.

6.Создать класс матрица. Данный класс содержит указатель на float, размер строк и столбцов и состояние ошибки. Определить конструктор без параметров, конструктор с одним параметром и конструктор с двумя параметрами, деструктор. Определить методы доступа: возвращать значение элемента (i,j) и адрес этого элемента. Определить функцию вывода на экран. Определить функции сложения и вычитания (матрицы с матрицей), умножение матрицы на матрицу. Определить умножение матрицы на число. Проверить работу этого класса. В случае нехватки памяти, несоответствия размерностей, выхода за пределы устанавливать код ошибки.

7.Создать класс матрица. Данный класс содержит указатель на int, размер строк и столбцов и состояние ошибки. Определить конструктор без параметров, конструктор с одним параметром и конструктор с двумя параметрами, деструктор. Определить методы доступа: возвращать значение элемента (i,j) и адрес этого элемента. Определить функцию вывода на экран. Определить функции сложения и матрицей), умножение матрицы на матрицу. Определить вычитания (матрицы с умножение матрицы на число. Проверить работу этого класса. В случае нехватки

памяти, несоответствия размерностей, выхода за пределы устанавливать код ошибки.

8.Создать класс матрица. Данный класс содержит указатель на long, размер строк и столбцов и состояние ошибки. Определить конструктор без параметров, конструктор с одним параметром и конструктор с двумя параметрами, деструктор. Определить методы доступа: возвращать значение элемента (i,j) и адрес этого элемента. Определить функцию вывода на экран. Определить функции сложения и вычитания (матрицы с матрицей), умножение матрицы на матрицу. Определить умножение матрицы на число. Проверить работу этого класса. В случае нехватки памяти, несоответствия размерностей, выхода за пределы устанавливать код ошибки.

9.Создать класс время с полями: час (0-23), минута (0-59), секунда (0-59). В классе описать конструктор, а также функции-члены установки времени, получения часа, минуты и секунды, а также две функции вывода на экран: вывода по шаблону: «16 часов 18 минут 3 секунды» и «4 p.m. 18 минут 3 секунды». Функции-члены установки полей класса должны проверять корректность задаваемых параметров.

10.Создать класс дата с полями: день (1-31), месяц (1-12), год (целое число). В классе описать конструктор, а также функции-члены установки дня, месяца и года, получения дня, месяца и года, а также две функции вывода на экран: вывода по шаблону: "5 января 1997 года" и "05.01.1997". Функции-члены установки полей класса должны проверять корректность задаваемых параметров. Функция-член дает приращение на 1 день.

11.Создать класс квадрат. Поля – сторона и прозрачность. Разработать функции-члены, которые возвращают площадь, периметр, устанавливает поля, и возвращают значения. Функции-члены установки полей класса должны проверять корректность задаваемых параметров. Функция вывода на экран (рисовать символами «*»).

12.Создать класс окружность. Поля – радиус и прозрачность. Разработать функции-члены, которые возвращают площадь, длину окружности, устанавливает поля, и возвращают значения. Функции-члены установки полей класса должны проверять корректность задаваемых параметров. Функция вывода на экран (рисовать символами «*»).

13.Создать класс прямоугольник. Поля - высота и ширина. Разработать функции-члены, которые возвращают площадь, периметр, устанавливает поля, и возвращают значения. Функции-члены установки полей класса должны проверять корректность задаваемых параметров. Функция вывода на экран (рисовать символами «*»).

14.Разработать класс кольцевой буфер емкостью 1024 вещественных числа. Доступ к элементам буфера - как к элементам очереди. Обязательны функции-члены класса для инициализации буфера, добавления/удаления

элемента, определения количества свободного/занятого пространства в буфере.

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

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

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

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

19.Разработать класс точка и линия. Должны быть реализованы следующие операции: ввода/вывода координат; проверка, находится ли точка на линии, установка точки на середину прямой, поворот, растяжение, сжатие линии, перемещение точки.

20.Разработать класс комплексное число, задаваемое своей реальной и мнимой частями (например, 5+3i задается парой (5, 3)). Обязательны функции-члены класса для ввода/вывода числа, сложения, произведения двух чисел, а также возведения числа в целую степень.

21.Разработать класс кирпич. Обязательные функции-члены класса: ввода/вывода высоты, глубины, ширины, стоимость, вычисление объема, проверка плоскостей соответствию пропорции золотого сечения, подсчет количество кирпичей в заданном объеме, подсчет стоимости кирпича на возведение стены, масса кирпича, при заданной плотности.

22.Разработать класс конвертер из любого заданного типа в текст и обратно. Обязательные функции-члены класса: вывода строки, запись переменных типа int, запись переменных типа float, запись переменных типа char*, чтение переменных типа int, чтение переменных типа float, чтение переменных типа char*.

23.Разработать класс конвертер из данных (последовательности байт) в заданный тип и обратно. Обязательные функции-члены класса: запись

переменных типа int; запись переменных типа float; запись переменных типа char*; чтение переменных типа int; чтение переменных типа float; чтение переменных типа char*.

24.Разработать класс квадратная целочисленная матрица. Обязательны функции-члены класса: ввода/вывода матрицы; вычисления следа матрицы; определителя; получение транспонированной матрицы; перестановка столбцов матрицы и строк; определение Евклидовой нормы матрицы.

25.Разработать класс прямоугольник. Обязательные функции-члены класса: ввода/вывода координат прямоугольника; вычисление периметра; вычисление площади; определение является ли прямоугольник квадратом; длина; ширина; смещение; вращение. Также реализовать функцию разбиения прямоугольника на минимальное количество квадратов.

26.Разработать класс множество для работы с множеством чисел. Обязательные функции-члены класса: ввода/вывода, среднее значение, математическое ожидание, медиана, мода, дисперсия, СКО.

27.Разработать класс прогрессия. Обязательные функции-члены класса: ввода/вывода коэффициентов прогрессии, вычисление суммы, вычисление N-того члена, выбор типа – арифметическая или геометрическая, математическое ожидание, СКО.

ЗАДАНИЕ №2. - ПЕРЕГРУЗКА ФУНКЦИЙ

1.Создать класс Double для работы с вещественными числами. Определить перегруженную функцию, возвращающую максимальное из двух аргументов. Функция не является членом класса Double. Перегруженные функции имеют аргументы типа int, double, Double. Тело перегруженных функций должны быть одинаковыми.

2.Создать класс Double для работы с вещественными числами. Определить перегруженную функцию, возвращающую минимальное из двух аргументов. Функция не является членом класса Double. Перегруженные функции имеют аргументы типа int, double, Double. Тело перегруженных функций должны быть одинаковыми.

3.Создать класс Float для работы с вещественными числами. Определить перегруженную функцию, возвращающую среднее значение из двух аргументов. Функция не является членом класса Float. Перегруженные функции имеют аргументы типа int, float, Float. Тело перегруженных функций должны быть одинаковыми.

4.Создать класс Complex для работы с комплексными числами. Определить перегруженную функцию, возвращающую максимальный из двух аргументов. Функция не является членом класса комплексных чисел. Перегруженные функции имеют аргументы типа int, double, complex. Тело перегруженных функций должны быть одинаковыми.

5.Создать класс Complex для работы с комплексными числами. Определить перегруженную функцию, возвращающую минимальный из двух аргументов. Функция не является членом класса комплексных чисел. Перегруженные функции имеют аргументы типа int, double, complex. Тело перегруженных функций должны быть одинаковыми.

6.Создать класс Complex для работы с комплексными числами. Определить перегруженную функцию, возвращающую гипотенузу из двух аргументов. Функция не является членом класса комплексных чисел. Перегруженные функции имеют аргументы типа int, double, complex. Тело перегруженных функций должны быть одинаковыми.

7.Создать класс Complex для работы с комплексными числами. Определить перегруженную функцию, возвращающую квадратный корень аргумента. Функция не является членом класса комплексных чисел. Перегруженные функции имеют аргументы типа int, double, complex. Тело перегруженных функций должны быть одинаковыми.

8.Создать класс Integer для работы с целыми числами. Определить перегруженную функцию, возвращающую модуль аргумента. Функция не является членом класса целых чисел. Перегруженные функции имеют аргументы типа int, double, Integer. Тело перегруженных функций должны быть одинаковыми.

9.Создать класс Integer для работы с целыми числами. Определить перегруженную функцию, возвращающую логарифм аргумента. Функция не является членом класса целых чисел. Перегруженные функции имеют аргументы типа int, double, Integer. должны быть одинаковыми. Тело перегруженных функций должны быть одинаковыми.

10.Создать класс Integer для работы с целыми числами. Определить перегруженную функцию, возвращающую sin аргумента. Функция не является членом класса целых чисел. Перегруженные функции имеют аргументы типа int, double, Integer. Тело перегруженных функций должны быть одинаковыми.

11.Создать класс Integer для работы с целыми числами. Определить перегруженную функцию, возвращающую косинус аргумента. Функция не является членом класса целых чисел. Перегруженные функции имеют аргументы типа int, double, Integer. Тело перегруженных функций должны быть одинаковыми.

12.Создать класс целых чисел Integer. Определить перегруженную функцию, возвращающую экспоненту аргумента. Функция не является членом класса целых чисел. Перегруженные функции имеют аргументы типа int, double, Integer. Тело перегруженных функций должны быть одинаковыми.

ЗАДАНИЕ №3. - ПЕРЕГРУЗКА ОПЕРАТОРОВ

1.Создать класс вектор в двумерном пространстве, который задается парой своих координат. Перегрузить операторы для следующих операций: сложения, вычитания, скалярного произведения, векторного произведения, умножения вектора на скаляр, а также операторы сравнения

(!=,==,<,>,<=,>=,!).

2.Создать класс строка символов. Перегрузить операторы для следующих операций: сравнения строк, удаления из строки указанного символа, переворота строки, удаления из первой строки всех символов, встречающихся во второй строке, а также операторы сравнения

(!=,==,<,>,<=,>=,!).

3.Создать класс прямоугольная матрица. Перегрузить операторы для следующих операций: ввода/вывода, сложения, вычитания, умножения, нахождение определителя, получения обратной матрицы, а также операторы сравнения (!=,==,<,>,<=,>=,!).

4.Создать класс комплексное число, задаваемое своим модулем и углом

(например, число

 

 

 

 

 

задается парой

 

 

. Перегрузить

10 cos

 

j sin

 

10,

 

 

 

6

 

 

 

 

 

6

 

 

 

6

 

 

операторы для следующих операций: ввода/вывода числа, сложение, вычитание, произведения, деление чисел, возведение в целочисленную степень, извлечение квадратного корня, а также операторы сравнения

(!=,==,<,>,<=,>=,!).

5.Создать класс комплексное число, задаваемое своей вещественной и мнимой частями (например, 5+3j задается парой (5, 3)). Перегрузить операторы для следующих операций: ввода/вывода числа, сложения, вычитания, произведения, деления, возведения в целочисленную степень, извлечение квадратного корня, а также операторы сравнения

(!=,==,<,>,<=,>=,!).

6.Создать класс полином. Перегрузить операторы для следующих операций: ввода/вывода, сложения (полинома с числом), вычитание (числа из полинома), умножения (полинома на число), деления (полинома на число), вычисление значения полинома в заданной точке X, дифференцирования, интегрирования, а также операторы сравнения (!=,==,<,>,<=,>=,!).

7.Создать класс множество целых чисел. Перегрузить операторы для следующих операций: ввода/вывода, объединения двух множеств, пересечения двух множеств, разности двух множеств, добавление элемента в множество, удаления элемента из множества, а также операторы сравнения (!=,==,<,>,<=,>=,!).

8.Создать класс рациональная дробь (вида m/n). Перегрузить операторы для следующих операций: ввода/вывода, сложения (с числом и "рациональной дробью"), вычитания (с числом и "рациональной дробью"), умножения (с числом и "рациональной дробью"), деления (с числом и

"рациональной дробью"), приведение дроби к несократимому виду, а также операторы сравнения (!=,==,<,>,<=,>=,!) и преобразования к типу float.

9.Создать класс число в системе счисления. Обеспечить корректную работу с восьмеричной, двоичной и шестнадцатеричной системами счисления. Число хранится в виде строки длиной 16 символов. Перегрузить операторы для следующих операций: ввода/вывода, сложения, вычитания, умножения, деления, нахождения НОК, нахождения НОД, а также операторы сравнения (!=,==,<,>,<=,>=,!)и преобразования в число.

10.Создать класс ряд. Перегрузить операторы для следующих операций: ввода/вывода, сложения, вычитания, умножения, умножения на число, деления на число, а также операторы сравнения (!=,==,<,>,<=,>=,!).

11.Ввести класс дата (Григорианский календарь). Перегрузить операторы для следующих операций: сложение даты и заданного количества дней, сложение/вычитание из даты заданного количества дней, вычисление числа дней, прошедших между двумя датами, определение дня недели, определение месяца, определение года, а также операторы сравнения (!=,==,<,>,<=,>=,!) и преобразования в число.

12.Ввести класс время. Перегрузить операторы для следующих операций: добавления заданного количества секунд, измерения интервала между двумя моментами времени (оператор старт и стоп), сложения, вычитания, вывода на экран, присвоения, а также операторы сравнения (!=,==,<,>,<=,>=,!) и преобразования в число.

13.Создать класс вектор, содержащий в качестве параметров указатель на int, размерность вектора и переменную ошибки. Класс имеет конструкторы по умолчанию, конструктор с одним и двумя параметрами, конструктор копирования и деструктор. Определить операторы +, - , * , - как дружественные функции, =, +=, -=, *=,[] - как функции-члены. Определить операторы =, +, - , *, +=, -=, *= с целым числом, операторы ++ и --. Перегрузить операторы вывода в поток и ввода из потока.

14.Создать класс матрица, содержащий в качестве параметров указатель на int, количество строк, количество столбцов и состояние ошибки. Определить конструкторы по умолчанию, конструктор с одним и с двумя параметрами, конструктор копирования, деструктор. Определить операторы =, +, -, +=, -=, *., *= с объектами этого класс, с целым и с вектором, определенным в задании 10. Определить оператор [] так, чтобы обращение [][] к элементам имело смысл, аналогичный встроенному. Перегрузить операторы вывода в поток и ввода из потока.

15.Создать класс целое число. Определить оператор ++ как функцию-член и - - как дружественную функцию. Создать класс вещественных чисел

(Double). Определить оператор -, как функцию-член и + как дружественную функцию.

16.Создать класс целое число. Определить оператор --, как функцию-член и ++ как дружественную функцию. Создать класс целых чисел (Long). Определить оператор +, как функцию-член и - как дружественную функцию.

17.Создать класс вещественное число. Определить оператор ++, как функцию-член и -- как дружественную функцию. Создать класс целых чисел (Long). Определить оператор - как функцию-член и + как дружественную функцию. Дополнительно определить операторы присвоения и сравнений.

18.Создать класс координаты с унарным ++ и --. ++ и -- постфиксная и префиксная. - меняет знак у обеих координат. ++ как функция-член, -- как дружественная функция. Создать класс целых чисел. Определить оператор - как функцию-член и + как дружественную функцию.

19.Создать класс координаты. Определить оператор +, как функцию-член и – как дружественную функцию. Определить функции сложения и вычитания координат с друг другом и с числом. Повернуть на заданный угол. Растянуть и сжать. Присвоить координаты, сравнить координаты (==, !=).

20.Создать класс Double. Определить оператор -- как функцию-член и ++ как дружественную функцию. Создать класс целых чисел Int. Определить оператор +, как функцию-член и – как дружественную функцию.

21.Создать класс вектор, содержащий в качестве параметров указатель на long, размерность вектора и переменную ошибки. Класс имеет конструкторы по умолчанию, конструктор с одним и двумя параметрами, конструктор копирования и деструктор. Определить оператор +, - , * , - как дружественные функции, =, +=, -=, *=,[] - как функции-члены. Определить операторы =, +, - , *, +=, -=, *= с числом типа long, операторы ++ и --. Перегрузить операторы вывода в поток и ввода из потока.

22.Создать класс матрица, содержащий в качестве параметров указатель на long, число строк и столбцов и состояние ошибки. Определить конструкторы по умолчанию, конструктор с одним и с двумя параметрами, конструктор копирования, деструктор. Определить операторы =, +, -, +=, - =, *., *= с объектами этого класс, с long и с вектором, определенном в задании 25. Определить оператор [] так, чтобы обращение [][] к элементам имело смысл, аналогичный встроенному. Перегрузить операторы вывода в поток и ввода из потока.

23.Создать класс вектор, содержащий в качестве параметров указатель на float, размерность вектора и переменную ошибки. Класс имеет конструкторы по умолчанию, конструктор с одним и двумя параметрами, конструктор копирования и деструктор. Определить оператор +, - , * , - как дружественные функции, =, +=, -=, *=,[] - как функции-члены. Определить