Лабораторная работа №3 «Перегрузка операций» — КиберПедия 

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Лабораторная работа №3 «Перегрузка операций»

2017-06-20 525
Лабораторная работа №3 «Перегрузка операций» 0.00 из 5.00 0 оценок
Заказать работу

Задание 4. В классе, реализованном в задании №2, необходимо перегрузить нижеследующие операции, при этом две функции-операции должны быть реализованы как методы класса, а одна – как дружественная функция:

· Присваивание «=»;

· Сложение (в случае символьных полей сложение понимается как конкатенация) «+»;

· Соответствие (равенство) «==».

 

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

Напомним, что класс, описывающий Буддистские монастыри Японии имеет следующие поля:

Название. char *name;

Школа. char *school; Тип этого поля претерпел изменения, вызванные новыми условиями. На первый взгляд, тип этого поля можно оставить прежним char. Но на самом деле оказывается, что для выполнения перегрузки оператора суммы и корректного выполнения программы, тип данного поля необходимо определить как char *. Это можно объяснить тем, что при перегрузке оператора суммы необходимо произвести конкатенацию символьных полей.

Количество монахов. unsigned int count;

Площадь земли. float square;

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

1. Сhurch& operator = (Сhurch&);

Данная функция производит перегрузку оператора присваивания, то есть выполняет присваивание полей одного объекта класса полям другого объекта этого же класса. Как и в задании №2, для корректной работы со строками требуется динамическое выделение памяти и ее освобождение.

2. int operator == (Сhurch&);

Функция позволяет установить соответствие между экземплярами одного класса. Ее тело включает проверку на равенство значений числовых полей и сравнение содержимого строк, которое выполняется с помощью функции strcmp. В зависимости от того, тождественны ли экземпляры функцией, возвращается 0 или 1.

int Church::operator == (Church & c) {

if ((count!= c.count) ||

(ceil(square)!=ceil(c.square)) ||

(strcmp(name,c.name)!= 0) ||

(strcmp(school,c.school)!= 0)

)

Return 0; //ложь

Else

Return 1;//истина

}
и функцию-операцию, являющуюся дружественной функцией:

3. friend Сhurch operator + (Сhurch&, Сhurch&);

Оператор + необходимо перегрузить способом, аналогичным своему традиционному арифметическому использованию. Поэтому важно, чтобы ни один из операндов не менялся. Например, когда вы складываете 10+4, результат равен 14, но ни 10, ни 4 не меняются. Таким образом, внутри функции необходим временный объект для хранения результата.

 

Задание 5.

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

· Для демонстрации работы программы необходимо реализовать меню, позволяющее вызывать операции реализованной структуры данных. На экране должна отображаться вся последовательность введенных элементов, над которыми производятся действия.

5.1. Создайте класс, реализующий стек. В интерфейс класса должны входить перегруженные операции:

1) положить в стек (<<);

2) взять из стека (>>).

 

5.2. Создайте класс, реализующий стек. В интерфейс класса должны входить перегруженные операции:

1) положить в стек (+);

2) взять из стека (-).

 

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

1) добавить элемент в конец очереди (<<);

2) извлечь элемент из начала очереди (>>).

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

1) добавить элемент в конец очереди (+);

2) извлечь элемент из начала очереди (-).

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

1) добавить элемент в конец очереди (>=);

2) добавить элемент в начало очереди (<=);

3) извлечь элемент из начала очереди (<<);

4) извлечь элемент из конца очереди (>>).

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

1) добавить элемент в конец очереди (+);

2) добавить элемент в начало очереди (<<);

3) извлечь элемент из начала очереди (>>);

4) извлечь элемент из конца очереди (-).

 

5.7. Создайте класс, реализующий двунаправленный список. В интерфейс класса должны входить перегруженные операции:

1) переместиться в начало списка (--);

2) переместиться в конец списка (++);

3) передвинуть указатель на один элемент вправо (>);

4) передвинуть указатель на один элемент влево (<);

5) добавить элемент в текущее положение указателя (+);

6) удалить элемент по текущему положению указателя (-).

 

5.8. Создайте класс, реализующий двунаправленный список. В интерфейс класса должны входить перегруженные операции:

1) переместиться в начало списка (++);

2) переместиться в конец списка (--);

3) передвинуть указатель на один элемент вправо (>=);

4) передвинуть указатель на один элемент влево (<=);

5) добавить элемент в текущее положение указателя (<<);

6) удалить элемент по текущему положению указателя (>>).

 

5.9. Создайте класс, реализующий дерево поиска. В интерфейс класса должны входить перегруженные операции:

5) добавить элемент (+);

6) удалить элемент (-).

 

5.10. Создайте класс, реализующий дерево поиска. В интерфейс класса должны входить перегруженные операции:

5) добавить элемент (<<);

6) удалить элемент (>>).

 



Поделиться с друзьями:

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.012 с.