Лабораторная работа №5 «Шаблоны классов»
Задание 8.
1.Создать шаблон класса для работы с массивом произвольного типа данных. Шаблон должен включать:
- указатель, хранящий адрес размещения массива в динамической памяти;
- целочисленную переменную, показывающую количество занятых элементов массива;
- конструктор без параметров с параметрами по умолчанию;
- конструктор копирования;
- метод «обработка массива» (на начальном этапе метод выводит на консоль какое-либо сообщение);
- деструктор
и другие необходимые для работы методы (например, перегрузка операций индексирования и присваивания, методы ввода / вывода и т.д.).
2. Предусмотреть генерацию и обработку исключений для возможных ошибочных ситуаций (отрицательная размерность при задании массива, выход за границы диапазона при обращении по индексу и т.д.).
3. В функции main() показать использование созданного класса, включая ситуации, приводящие к генерации исключений; показать инстанцирование шаблона для различных типов.
4. На основе данного шаблона создать класс для работы со строкой символов, специализировав метод «обработка массива» для вашей конкретной задачи.
8.1. Дана строка латинских символов. Преобразовать строку, заменив все символы на заглавные.
8.2. Дана строка латинских символов. Преобразовать строку, заменив все символы на строчные.
8.3. Дана строка латинских символов. Преобразовать строку, разместив в алфавитном порядке все различные строчные латинские буквы, входящие в исходную строку.
8.4. Дана строка латинских символов. Преобразовать строку, заменив все вхождения «abc» на «def».
8.5.Дана строка латинских символов. Преобразовать строку, удалив первое вхождение «w», если такое есть (образовавшуюся «дыру» заполнить последующими буквами, а в конец добавить пробел).
8.6. Дана строка латинских символов. Преобразовать строку, заменив на «ks» первое вхождение «x», если оно есть.
8.7. Дана строка латинских символов. Преобразовать строку в эту же последовательность символов, но в обратном порядке.
8.8. Дана строка латинских символов. Преобразовать строку, удалив из нее повторно входящие символы.
8.9. Дана строка латинских символов. Преобразовать строку, оставив символы, которые встречаются в последовательности по одному разу.
8.10. Дана строка латинских символов. Преобразовать строку, оставив все различные символы, указав для каждого из них число его вхождений в исходную строку.
8.11. Дана строка латинских символов. Преобразовать строку, разместив символы в алфавитном порядке, разделяя их пробелами.
8.12. Дана строка латинских символов. Преобразовать строку, оставив символы, которые являются строчными.
8.13. Дана строка латинских символов. Преобразовать строку, оставив символы, которые являются заглавными.
8.14. Дана строка латинских символов. Преобразовать строку, оставив символы, отличающиеся от последнего.
8.15. Дана строка латинских символов. Преобразовать строку, удалив из нее символы, встречающиеся ровно два раза.
8.16. Дана строка латинских символов. Преобразовать строку, оставив символы, отличающиеся от первого.
8.17. Дана строка латинских символов. Преобразовать строку, разместив символы в алфавитном порядке, разделяя их запятыми.
8.18. Дана строка латинских символов. Преобразовать строку, заменив на «ks» все вхождения «x», если они есть.
8.19. Дана строка латинских символов. Преобразовать строку, заменив на «ww» все вхождения «www», если они есть.
8.20. Дана строка латинских символов. Преобразовать строку, заменив на «w» первое вхождение «www», если оно есть.
Задание 9.
1.Создать шаблон класса, реализованного в задании №5 для работы со структурой произвольного типа данных.
2. Предусмотреть генерацию и обработку исключений для возможных ошибочных ситуаций (удаление из пустой структуры, смещение за пределы структуры и т.п.).
3. В функцииmain() показать использование созданного класса, включая ситуации, приводящие к генерации исключений; показать инстанцирование шаблона для различных типов (int, float, string).
Лабораторная работа №6 «Потоковые классы»
Задание 10.
10.1.Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса матриц размером 3×3. Данный класс также описывается в указанном модуле и содержит перегруженные операции сложения и умножения матриц.
10.2. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса полиномов степени 5. Данный класс также описывается в указанном модуле и содержит перегруженные операции сложения и умножения полиномов.
10.3. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции sin(x) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения (x-0.16667x3+…). Значение n определяет пользователь.
10.4. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции cos(x) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значение n определяет пользователь.
10.5. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции sin2(x) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значение n определяет пользователь.
10.6. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции cos2(x) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значение n определяет пользователь.
10.7. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции exp(x) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значение n определяет пользователь.
10.8. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции sin(ax) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значение n определяет пользователь.
10.9. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции cos(ax) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значения а и n определяет пользователь.
10.10. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции exp(ax) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значения а и n определяет пользователь.
10.11. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции ln(1+x) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значение n определяет пользователь.
10.12. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции ln(1+ax) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значения а и n определяет пользователь.
10.13. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции sin(x)+cos(x) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значение n определяет пользователь.
10.14. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции sin(ax)+cos(x) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значения a и n определяет пользователь.
10.15. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции sin(x)+cos(аx) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значения a и n определяет пользователь.
10.16. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции exp(x)+exp(-x) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значение n определяет пользователь.
10.17. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции exp(x)+exp(ax) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значения a и n определяет пользователь.
10.18. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции exp(x)-exp(-x) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значение n определяет пользователь.
10.19. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции exp(x)-exp(ax) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значения a и n определяет пользователь.
10.20. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции (1+x)m в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значение n и m определяет пользователь.
10.21. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции (1+аx)m в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значения a, m и n определяет пользователь.
10.22. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции exp(x)+ln(1+x) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значение n определяет пользователь.
10.23. Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции exp(x)-ln(1+x) в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значение n определяет пользователь.
10.24.Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции двух переменных (a+x)m в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значения a, m и n определяет пользователь.
10.25.Реализуйте модуль, подключение которого перегружает операции помещения в поток вывода и извлечение из потока ввода для класса, содержащего методы разложения функции двух переменных (b+аx)m в ряд Тейлора. На экран должно выводиться n первых слагаемых разложения. Значения a, b, m и n определяет пользователь.