Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯП_Си++_Лаб.doc
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
573 Кб
Скачать
☆

Указания к решению (вариант 25)

class B{

int a;

public:

B() { };

B(int x) { a=x; }

void show_B() { cout <<"B= "<< a << "\n"; }

};

class D1: public B {

int b;

public:

D1(int x, int y) : B(y) { b=x; };

void show_D1() { cout <<"D1= "<< b << "\n"; show_B();}

};

class D2: private B{

int c;

public:

D2(int x, int y) : B(y) { c=x; };

void show_D2() { cout <<"D2= "<< c << "\n"; show_B();}

};

class D3: private D1, public D2 {

int d;

public:

D3(int x, int y, int z, int i, int j) : D1(y,z), D2(i,j) { d=x; }

void show_D3() { cout << "D3= "<<d << "\n"; show_D1(); show_D2();}

};

class D4: public D2, private D1 {

int e;

public:

D4(int x, int y, int z, int i, int j) : D1(y,z), D2(i,j) { e=x; }

void show_D4() { cout <<"D4= "<< e << "\n"; show_D1(); show_D2();}

};

Void main() {

setlocale(LC_ALL,"Russian");

D3 temp(100,200,300,400,500);

D4 temp1(1,2,3,4,5);

cout << "D3 temp(100,200,300,400,500);\n";

cout << "D4 temp1(1,2,3,4,5);\n";

cout<< "\nСледуя иерархии класса D3: \n";

temp.show_D3();

cout<< "\nСледуя иерархии класса D4\n";

temp1.show_D4();

system("Pause");

}

Лабораторная работа №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).