Министерство образования и науки Российской федерации Федеральное агентство по образованию

advertisement
Министерство образования и науки Российской федерации
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
«РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
для студентов 2 курса вечернего отделения
механико-математического факультета
по курсу
ЯЗЫКИ ПРОГРАММИРОВАНИЯ
И МЕТОДЫ ТРАНСЛЯЦИИ
ЗАДАНИЯ ПО УЧЕБНОЙ ПРАКТИКЕ
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
Ростов-на-Дону
2006
Методические указания разработаны сотрудниками кафедры прикладной
математики
и
программирования:
доцентом
Я.М.
Русановой,
старшим
преподавателем Н.И. Амелиной, старшим преподавателем Л.Г. Пасечным
Ответственный редактор
ст. преподаватель Н.И. Амелина
Компьютерный набор и верстка
ст. лаборанта И.В. Евдокимовой
Печатается в соответствии с решение кафедры прикладной математики и
программирования механико-математического факультета РГУ, протокол №9 от
18 мая 2006 г.
2
СОДЕРЖАНИЕ
ЗАДАНИЕ 1. ОПРЕДЕЛЕНИЕ КЛАССА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1. Класс Дробь . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2. Класс Комплексное число. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3. Класс Комплексное число. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
4. Класс Вектор 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5. Класс Вектор 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
6. Класс Матрица 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
7. Класс Время . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
8. Класс Дата . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
9. Класс Вектор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
10. Класс Полином . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
11. Класс Матрица целых чисел . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
12. Класс Вещественная матрица . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
13. Класс Строка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
14. Класс Список . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
15. Класс Двусвязный список . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
16. Класс Стек . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
17. Класс Очередь . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
18. Класс Дерево . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
ЗАДАНИЕ 2. ПЕРЕГРУЗКА ОПЕРАЦИЙ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
ЗАДАНИЕ 3. ШАБЛОНЫ КЛАССОВ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
ЗАДАНИЕ 4. НАСЛЕДОВАНИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
ЛИТЕРАТУРА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3
ЗАДАНИЕ 1. ОПРЕДЕЛЕНИЕ КЛАССА
Составить описание класса. Определить конструктор по умолчанию,
конструктор инициализации (конструктор с параметрами), деструктор и
обязательные функции – члены класса (методы) из списка методов класса.
Написать
программу,
демонстрирующую
работу
с
этим
классом.
Программа должна содержать меню, позволяющее осуществить проверку всех
методов класса.
1. Класс Дробь
Класс для работы с рациональными дробями (вида m/n).
Методы класса:
а) ввод дроби;
б) вывод дроби в виде m/n (например, 1/3 или -2/5);
в) приведение дроби к несократимому виду;
г) сложение двух дробей;
д) вычитание двух дробей;
е) умножение двух дробей;
ж) деление двух дробей;
з) сравнение двух дробей (первая меньше второй);
и) сравнение двух дробей (первая больше второй);
к) сравнение двух дробей (первая равна второй).
Указание к решению
Для приведения дроби к несократимому виду следует:
– в случае равенства числителя и знаменателя положить их равными
единице;
– в случае неравенства найти наибольший общий делитель (nod) числителя
и знаменателя и разделить на nod числитель и знаменатель.
Для нахождения nod двух чисел можно использовать либо «Алгоритм
Евклида», либо его вариант, основанный на вычитании чисел [3].
4
2. Класс Комплексное число
Комплексное число задается своей вещественной и мнимой частями (a+bi).
Методы класса:
а) ввод числа (например, число 5+3i задается парой чисел 5 и 3);
б) вывод числа в виде a+bi;
в) сложение двух чисел;
г) вычитание двух чисел;
д) умножение двух чисел;
е) деление чисел.
Указания к решению
Суммой двух комплексных чисел a1+b1i и a2+b2i называют комплексное
число (a1+a2)+(b1+b2)i.
Разностью
двух
комплексных
чисел
a1+b1i
и
a2+b2i
называют
комплексное число (a1-a2)+(b1-b2)i.
Произведением двух комплексных чисел a1+b1i и a2+b2i называют
комплексное число (a1·a2-b1·b2)+(a1·b2+b1·a2)i.
Частным от деления комплексного числа a1+b1i (делимого) на комплексное
число a2+b2i (делитель) является (если делитель не равен нулю) комплексное
число x+yi:
x
a1  a 2  b1  b 2
,
a 2 2 b 2 2
y
b1  a 2  a1  b 2
a 2 2 b 2 2
3. Класс Комплексное число
Комплексное число задается своим модулем r и аргументом (углом)  .
Методы класса:
а) ввод числа;
б) вывод числа в виде rcos  i sin   ;
5
в) умножение двух чисел;
г) деление чисел;
д) возведение числа в целую степень;
е) извлечение квадратного корня.
Указания к решению
При умножении комплексных чисел, заданных модулем r и аргументом
(углом)  , их модули перемножаются, а аргументы складываются:
r1  r 2 cos 1   2   i sin 1   2 
При делении комплексных чисел их модули делятся, а аргументы
вычитаются:
r1
cos1  2   i sin 1  2 ,
r2
r2  0 .
При возведении комплексного числа в целую степень модуль возводится в
ту же степень, а аргумент умножается на показатель степени (формула Муавра):
r n cos n  i sin n  .
Корень n-ой степени (n – натуральное) из комплексного числа имеет n
различных значений:
n
  2k
  2k 

r  cos
 i sin
,
n
n 

k  0,1, 2, ..., n  1.
4. Класс Вектор 2
Вектор
в
двумерном
евклидовом
координатами x и y .
Методы класса:
а) ввод вектора;
б) вывод вектора;
6
пространстве
задается
своими
в) сложение двух векторов;
г) вычитание двух векторов;
д) скалярное произведение двух векторов;
е) умножение вектора на число;
ж) деление вектора на число;
з) определение длины вектора.
5. Класс Вектор 3
Вектор
в
трехмерном
евклидовом
пространстве
задается
своими
координатами x, y, z .
Методы класса:
а) ввод вектора;
б) вывод вектора;
в) сложение двух векторов;
г) вычитание двух векторов;
д) скалярное произведение двух векторов;
е) умножение вектора на число;
ж) деление вектора на число;
з) определение длины вектора.
6. Класс Матрица 2
Квадратная целочисленная матрица второго порядка задается своими
элементами: a11, a12, a 21, a 22 .
Методы класса:
а) ввод матрицы;
б) вывод матрицы;
в) вычисление следа матрицы;
г) вычисление определителя матрицы;
7
д) вычисление нормы матрицы ( max aij );
е) сложение двух матриц;
ж) вычитание двух матриц;
з) умножение матрицы на число;
и) умножение двух матриц;
к) поэлементное сравнение двух матриц;
л) сравнение двух матриц по норме;
м) транспонирование матрицы;
н) определение обратной матрицы.
7. Класс Время
Время задается в формате час.минута.секунда.
Методы класса:
а) ввод момента времени;
б) вывод момента времени в заданном формате;
в) добавление ко времени заданного количества минут;
г) добавление ко времени заданного количества секунд;
д) вычитание из времени заданного количества минут;
е) вычитание из времени заданного количества секунд;
ж) сложение двух моментов времени;
з) вычитание из одного момента времени другого;
и) сравнение двух моментов времени (первый раньше второго);
к) сравнение двух моментов времени (первый позднее второго);
л) сравнение двух моментов времени (первый равен второму);
м) подсчет числа секунд между двумя моментами времени.
Указание к решению
Для методов в) – е) следует учесть переход через 24 часа. Для методов
и) – м) моменты времени находятся в пределах одних суток.
8
8. Класс Дата
Дата задается в формате число.месяц.год.
Методы класса:
а) ввод даты;
б) вывод даты в заданном формате;
в) сложение даты и заданного количества дней;
г) вычитание из даты заданного количества дней;
д) вычисление числа дней, прошедших между двумя датами;
е) сравнение двух дат (первая раньше второй);
ж) сравнение двух дат (первая позже второй);
з) сравнение двух дат (первая равна второй).
Указание к решению
Для методов в) – д) следует учесть високосные года. Пусть
x – две старшие цифры года,
y – две младшие цифры года.
Год считается високосным по григорианскому календарю, если y  0 и
делится на 4 или y  0 и x делится на 4.
Например, 2000 и 20004 годы – високосные, 1900 и 2006 годы нет.
9. Класс Вектор
Описывается одномерный массив целых чисел (вектор). Массив может
быть размещен в памяти:
– с помощью оператора описания (статически),
– с помощью операций выделения памяти (динамически).
Методы класса:
а) ввод вектора;
б) вывод вектора;
9
в) поэлементное сложение двух векторов (размер векторов может быть
различным);
г) поэлементное вычитание двух векторов (размер векторов может быть
различным);
д) скалярное произведение двух векторов;
е) умножение вектора на число;
ж) определение длины вектора;
з) доступ к заданному элементу вектора;
и) вывод элемента вектора по заданному индексу.
Указание к решению
Предусмотреть контроль выхода за границу массива.
10. Класс Полином
Класс многочленов от одной переменной задается степенью многочлена и
массивом коэффициентов:
a0 x n  a1 x n 1   a n 1x  an
Методы класса:
а) создание полинома по заданной степени и коэффициентам;
б) вывод полинома;
в) сложение двух полиномов;
г) вычитание двух полиномов;
д) умножение полинома на число;
е) вычисление значения полинома для заданного значения аргумента;
ж) дифференцирование полинома (получение нового объекта-многочлена –
производной заданного многочлена);
з) сравнение на равенство двух полиномов.
10
11. Класс Матрица целых чисел
Описывается квадратная целочисленная матрица произвольного порядка.
Матрица может быть размещена в памяти:
– с помощью оператора описания (статически),
– с помощью операций выделения памяти (динамически).
Методы класса:
а) ввод матрицы;
б) вывод матрицы;
в) вычисление следа матрицы;
г) вычисление нормы матрицы ( max aij );
д) сложение двух матриц;
е) вычитание двух матриц;
ж) умножение матрицы на число;
з) умножение двух матриц;
и) поэлементное сравнение двух матриц на равенство;
к) сравнение двух матриц по норме;
л) транспонирование матрицы;
м) проверка типа матрицы:
– нулевая,
– единичная,
– диагональная,
– верхняя треугольная,
– нижняя треугольная,
– мономиальная (если в каждой ее строке и в каждом столбце имеется
лишь один элемент, отличный от нуля).
Указания к решению
Предусмотреть контроль выхода за границы массива.
Для методов д) – е) и з) – к) обеспечить проверку равенства размерностей.
11
12. Класс Вещественная Матрица
Описывается вещественная матрица размера m  n . Матрица может быть
размещена в памяти:
– с помощью оператора описания (статически),
– с помощью операций выделения памяти (динамически).
Методы класса:
а) ввод матрицы;
б) вывод матрицы;
в) сложение двух матриц;
г) вычитание двух матрицы;
д) умножение матрицы на число;
е) деление матрицы на число;
ж) умножение двух матриц;
з) поэлементное сравнение двух матриц;
и) вычисление нормы матрицы max aij ;
к) сравнение двух матриц по норме;
л) транспонирование матрицы;
м) проверка типа матрицы, если m  n :
– нулевая,
– единичная,
– диагональная,
– верхняя треугольная,
– нижняя треугольная,
– мономиальная (если в каждой ее строке и в каждом столбце имеется
лишь один элемент, отличный от нуля).
Указания к решению
Предусмотреть контроль выхода за границы массива.
Для методов в) – г) и ж) – з) обеспечить проверку равенства размерностей.
12
13. Класс Строка
Строка задается длиной и указателем на выделенную для нее память.
Методы класса:
а) ввод строки;
б) вывод строки;
в) слияние строк (конкатенация);
г) сравнение строк;
д) удаление из строки заданного символа;
е) удаление из строки всех символов, равных заданному;
ж) вставка в строку заданного символа после первого вхождения другого
заданного символа;
з) вставка в строку заданного символа после каждого вхождения другого
заданного символа;
и) переворот строки.
Указание к решению
Строка представляет собой массив, завершающийся нуль-символом ‘\0’,
поэтому при задании длины строки, необходимо его учитывать.
14. Класс Список
Описать класс, реализующий линейный однонаправленный список целых
чисел.
Методы класса:
а) создание списка добавлением нового элемента в начало списка;
б) создание списка добавлением нового элемента в конец списка;
в) вывод списка;
г) добавление элемента в начало списка;
д) добавление элемента в конец списка;
13
е) поиск элемента с заданным значением (возвращает указатель на элемент
или 0, если такого элемента в списке нет);
ж) удаление элемента с заданным значением;
з) удаление всех элементов с заданным значением;
и) вставка нового элемента после элемента с заданным значением;
к) сравнение на равенство двух списков;
л) выбор элемента списка с заданным номером;
м) сравнение длин двух списков (первый короче второго);
н) сравнение длин двух списков (первый длиннее второго);
о) сравнение длин двух списков (длины равны).
15. Класс Двусвязный список
Описать класс, реализующий двусвязный линейный список целых чисел.
Методы класса:
а) создание списка;
б) вывод списка;
в) добавление элемента в начало списка;
г) добавление элемента в конец списка;
д) поиск элемента с заданным значением (возвращает указатель на элемент
или), если такого элемента в списке нет);
е) удаление элемента с заданным значением;
ж) удаление всех элементов с заданным значением;
з) вставка нового элемента после элемента с заданным значением;
и) сравнение на равенство двух списков;
к) выбор элемента списка с заданным номером;
л) сравнение длин двух списков (первый короче второго);
м) сравнение длин двух списков (первый длиннее второго);
н) сравнение длин двух списков (длины равны).
14
16. Класс Стек
Описать класс, реализующий стек целых чисел.
Методы класса:
а) создание стека;
б) добавление элемента в стек;
в) выбор элемента из стека, удаляя его из стека;
г) получение значения вершины стека (без удаления элемента из стека);
д) проверка наличия элементов в стеке.
17. Класс Очередь
Описать класс, реализующий очередь целых чисел.
Методы класса:
а) создание очереди;
б) добавление элемента в очередь;
в) удаление элемента из очереди;
г) проверка наличия элементов в очереди;
д) просмотр элементов очереди.
18. Класс Дерево
Описать класс, реализующий дерево поиска (значения узлов дерева – целые
числа).
Методы класса:
а) создание дерева поиска;
б) обход дерева сверху вниз (префиксный обход);
в) обход дерева снизу вверх (постфиксный обход);
г) обход дерева слева направо (инфиксный обход);
д) вывод значений узлов дерева на экран с выделением уровней [6] (обход
справа налево);
15
е) добавление узла в дерево;
ж) удаление узла с заданным значением;
з) поиск по дереву (возвращает указатель на найденный элемент или 0, если
элемент с заданным значением не найден);
и) поиск по дереву с включением (возвращает указатель на найденный
элемент или включает элемент в соответствующее место и возвращает указатель
на него);
к) подсчет количества листьев дерева;
л) подсчет внутренних узлов дерева;
м) сравнение на равенство двух деревьев.
16
ЗАДАНИЕ 2. ПЕРЕГРУЗКА ОПЕРАЦИЙ
Перегрузка операций позволяет переопределить для классов (новых типов
данных) операции, определенные для встроенных (стандартных) типов данных,
например, + , < , = = и т.д.
Для классов, описанных в задании 1, перегрузить (переопределить)
операции. Перегрузку операций осуществить с помощью
– методов класса,
– дружественных функций.
1. Для класса Дробь переопределить следующие операции:
а) ввод дроби (операция >>);
б) вывод дроби в виде m n (операция <<);
в) сложение двух дробей;
г) вычитание двух дробей;
д) умножение двух дробей;
е) деление двух дробей;
ж) сравнение двух дробей (операция <);
з) сравнение двух дробей (операция >);
и) сравнение двух дробей (операция = =).
2. Для класса Комплексное число переопределить следующие операции:
а) ввод числа (операция >>);
б) вывод числа в виде a  bi (операция <<);
в) сложение двух чисел;
г) вычитание двух чисел;
д) умножение двух чисел;
е) деление двух чисел.
17
3. Для класса Комплексное число переопределить следующие операции:
а) ввод числа (операция >>);
б) вывод числа в виде r cos   i sin   (операция <<);
в) умножение двух чисел;
г) деление двух чисел;
д) возведение числа в целую степень (операция ^).
4. Для класса Вектор 2 переопределить следующие операции:
а) ввод вектора (операция >>);
б) вывод вектора (операция <<);
в) сложение двух векторов;
г) вычитание двух векторов;
д) скалярное произведение двух векторов;
е) умножение вектора на число;
ж) деление вектора на число.
5. Для класса Вектор 3 переопределить следующие операции:
а) ввод вектора (операция >>);
б) вывод вектора (операция <<);
в) сложение двух векторов;
г) вычитание двух векторов;
д) скалярное произведение двух векторов;
е) умножение вектора на число;
ж) деление вектора на число.
18
6. Для класса Матрица 2 переопределить следующие операции:
а) ввод матрицы (операция >>);
б) вывод матрицы (операция <<);
в) сложение двух матриц;
г) вычитание двух матриц;
д) умножение матрицы на число;
е) умножение двух матриц;
ж) поэлементное сравнение двух матриц (операция = =).
7. Для класса Время переопределить следующие операции:
а) ввод момента времени (операция >>);
б) вывод момента времени в формате час.минута.секунда (операция <<);
в) добавление ко времени заданного количества секунд;
г) вычитание из времени заданного количества секунд;
д) сложение двух моментов времени;
е) вычитание из одного момента времени другого.
ж) подсчет числа секунд между двумя моментами времени (операция %);
з) сравнение двух моментов времени (операция <);
и) сравнение двух моментов времени (операция >);
к) сравнение двух моментов времени (операция = =);
8. Для класса Дата переопределить следующие операции:
а) ввод даты (операция >>);
б) вывод даты в формате число.месяц.год (операция <<);
в) сложение даты и заданного количества дней;
г) вычитание из даты заданного количества дней;
д) вычисление числа дней, прошедших между двумя датами (операция %);
е) сравнение двух дат (операция <);
ж) сравнение двух дат (операция >);
з) сравнение двух дат (операция = =).
19
9. Для класса Вектор переопределить следующие операции:
а) ввод вектора (операция >>);
б) вывод вектора (операция >>);
в) сложение двух векторов;
г) вычитание двух векторов;
д) скалярное произведение двух векторов;
е) умножение вектора на число;
ж) деление вектора на число;
з) доступ к заданному элементу вектора (операция [ ]).
10. Для класса Полином переопределить следующие операции:
а) ввод полинома (операция >>) – создание полинома по заданной степени
и коэффициентам;
б) вывод полинома (операция <<);
в) сложение двух полиномов;
г) вычитание двух полиномов;
д) умножение полинома на число;
е) вычисление значения полинома для заданного значения аргумента
(операция
  );
ж) дифференцирование полинома (операция !);
з) сравнение двух полиномов (операция = =).
11. Для класса Матрица целых чисел переопределить следующие
операции:
а) ввод матрицы (операция >>);
б) вывод матрицы (операция <<);
в) сложение двух матриц;
г) вычитание двух матриц;
20
д) умножение матрицы на число;
е) умножение двух матриц;
ж) поэлементное сравнение двух матриц (операция = =);
з) доступ к заданному элементу матрицы (операция [ ] [ ]).
12. Для класса Вещественная матрица переопределить следующие
операции:
а) ввод матрицы (операция >>);
б) вывод матрицы (операция <<);
в) сложение двух матриц;
г) вычитание двух матриц;
д) умножение матрицы на число;
е) деление матрицы на число;
ж) умножение двух матриц;
з) поэлементное сравнение двух матриц (операция = =);
и) доступ к заданному элементу матрицы (операция [ ] [ ]).
13. Для класса Строка переопределить операции:
а) копирование строки (операция =);
б) слияние строк (операция +);
в) сравнение строк (операция = =);
г) удаление из строки заданного символа (операция –);
д) удаление из строки всех символов, равных заданному (операция – =);
е) переворот строки (операция ~).
14. Для класса Список переопределить операции:
а) создание списка (операция >>);
б) вывод списка (операция <<);
в) добавление элемента в начало списка (операция +);
г) добавление элемента в конец списка (операция + =);
21
д) удаление элемента с заданным значением (операция –);
е) удаление всех элементов с заданным значением (операция – =);
ж) сравнение на равенство двух списков (операция = =);
з) выбор элемента списка с заданным номером (операция [ ]);
и) сравнение длин двух списков (операция <);
к) сравнение длин двух списков (операция >);
л) сравнение длин двух списков (операция =);
м)
слияние
двух
упорядоченных
списков
в
один,
не
упорядоченности (операция *).
15. Для класса Двусвязный список переопределить операции:
а) создание списка (операция >>);
б) вывод списка (операция <<);
в) добавление элемента в начало списка (операция +);
г) добавление элемента в конец списка (операция + =);
д) удаление элемента с заданным значением (операция –);
е) удаление всех элементов с заданным значением (операция – =);
ж) сравнение на равенство двух списков (операция = =);
з) выбор элемента списка с заданным номером (операция [ ]);
и) сравнение длин двух списков (операция <);
к) сравнение длин двух списков (операция >);
л) сравнение длин двух списков (операция =).
16. Для класса Стек переопределить операции:
а) создание стека (операция >>);
б) добавление элемента в стек (операция +);
в) выбор элемента из стека (операция –);
г) получение значения вершины стека (операция – =);
д) просмотр элементов стека (операция <<);
22
нарушая
17. Для класса Очередь переопределить операции:
а) создание очереди (операция >>);
б) добавление элемента в очередь (операция +);
в) удаление элемента из очереди (операция –);
г) выбор элемента очереди с заданным номером (операция [ ]);
д) удаление элемента из очереди с заданным значением (операция – –);
е) удаление элемента из очереди по заданному номеру (операция – =);
ж) сравнение на равенство двух очередей (операция = =);
з) сравнение длин двух очередей (операция <);
и) сравнение длин двух очередей (операция >);
к) сравнение длин двух очередей (операция =);
л) просмотр элементов очереди (операция <<).
18. Для класса Дерево переопределить операции:
а) создание дерева поиска (операция >>);
б) вывод значений узлов дерева на экран с выделение уровней [6]
(операция <<);
в) добавление узла в дерево (операция +);
г) удаление узла с заданным значением (операция –);
д) поиск по дереву с включением (операция + =);
е) сравнение на равенство двух деревьев (операция = =);
ж) копирование дерева (операция =).
23
ЗАДАНИЕ 3. ШАБЛОНЫ КЛАССОВ
Шаблон – это обобщенное описание семейства классов, имеющих общую
структуру и операции, но использующих различные типы и константы.
Построить шаблон класса:
1) Вектор произвольных элементов;
2) Матрица произвольных элементов;
3) Список произвольных элементов;
4) Двусвязный список произвольных элементов;
5) Стек произвольных элементов;
6) Очередь произвольных элементов;
7) Дерево произвольных элементов.
Продемонстрировать использование созданного шаблонного класса для
различных типов элементов
24
ЗАДАНИЕ 4. НАСЛЕДОВАНИЕ
Наследование – это возможность создания иерархии классов, когда
потомки (производные классы) наследуют свойства своих предков (базовых
классов), могут их изменять и добавлять новые.
Создать базовый класс; на его основе создать производные классы.
Написать программу, демонстрирующую работу с объектами этих классов.
1. Точка: Окружность: Круг.
2. Точка: Окружность: Цилиндр.
3. Точка: Отрезок, Треугольник.
4. Точка: Квадрат, Прямоугольник (стороны параллельны осям координат).
5. Точка: Произвольный полигон (n-угольник).
6. Список: Двусвязный список.
7. Список: Стек.
8. Список: Очередь.
9. Список: Дерево.
10. Человек: Студент, Преподаватель.
11. Человек: Ребенок, Работник, Пенсионер.
12. Млекопитающее: Животное, Человек.
25
ЛИТЕРАТУРА
1. Амелина Н.И. Задачи по программированию. / Н.И. Амелина,
Я.М. Демяненко, Е.Н. Лебединская, Л.Г. Пасечный, И.Г. Спивак, А.Б. Усов. – М.:
Вузовская книга, 2000. – 104 с. – ISBN 5-89522-109-2.
2. Крячков А.В., Сухинина И.В., Томшин В.К. Программирование на C и
C++. Практикум. –М.: Горячая линия –Телеком, 2000.–344 с.–ISBN5-93517-014-0.
3. Минакова Н.И. Методы программирования. Учебное пособие
/ Н.И.Минакова, Е.С. Невская, Г.А. Угольницкий, А.А. Чекулаева,
М.И. Чердынцева. – М.: Вузовская книга, 2000. –280 с. – ISBN 5-89522-038-X.
4. Павловская Т.А., Щупак Ю.А. С++. Объектно-ориентированное
программирование: Практикум. –СПб.: Питер, 2004.–265 с. –ISBN 5-94723-842-X.
5. Скляров В.А. Программирование на языках Си и Си++: Практ. пособие. –
М.: Высш.шк., 1996. – 240 с. – ISBN 5-06-002685-X.
6. Амелина Н.И., Чердынцева М.И. Структуры данных. Деревья.
Методические указания по курсу «Алгоритмические языки и методы
трансляции» для студентов механико-математического факультета дневного и
вечернего отделения. – Ростов-на-Дону, УПЛ РГУ, 1998.
7. Невская Е.С., Чердынцева М.И. Программирование на языке С++
(объектно-ориентированное программирование). Методические указания для
студентов 1 и 2 курсов (дневного и вечернего отделения) механикоматематического факультета. – Ростов-на-Дону, УПЛ РГУ, 2005.
8. Чекулаева А.А., Спивак И.Г. Динамические структуры данных.
Методические указания для студентов вечернего отделения механикоматематического факультета. – Ростов-на-Дону, УПЛ РГУ, 1998.
26
Download