лабы / лаба 13 прога
.docx
Ф
ЕДЕРАЛЬНОЕ
АГЕНСТВО ВОЗДУШНОГО ТРАНСПОРТА
(РОСАВИАЦИЯ)
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ГРАЖДАНСКОЙ АВИАЦИИ» (МГТУ ГА)
Кафедра вычислительных машин, комплексов, систем и сетей.
Лабораторная работа защищена с оценкой ____________________
____________________
(подпись преподавателя, дата)
ЛАБОРАТОРНАЯ РАБОТА №13
по дисциплине «Программирование».
Вариант №17
Тема: «Разработка шаблонов абстрактных типов данных с перегрузкой в них ряда операций.»
Выполнила студентка группы ИС 1-1
Магальник Екатерина Борисовна
Руководитель: Белозуб Юлия Валерьевна
МОСКВА – 2023
Цель лабораторной работы
Целью лабораторной работы является получение практических навыков обобщенного программирования с использованием механизма шаблонов классов и функций для создания абстрактных типов данных и перегрузки стандартных операций для этих типов.
2.2 Задание на выполнение лабораторной работы
Создать шаблон заданного контейнерного класса и реализовать его для данных различных типов.
Текст программы:
#include <iostream> using namespace std; class F { public: char a, b; F() {}; F(char aa, char bb) { a = aa; b = bb; } ~F() {}; };
template <class T> class list { protected: template <class T> class Node { public: T material; Node* next; Node() { } }; Node<T>* begin; public: list() { begin = nullptr; } ~list() {}; void AddToBegin(T a) { Node<T>* n = new Node<T>; n->material = a; n->next = begin; begin = n; } void DeleteFirst() { Node<T>* d = begin; begin = begin->next; delete d; } void printList() { Node<T>* p = begin; while (p != nullptr) { cout << p->material << " "; p = p->next; } cout << endl; } bool Equal(list<T>a, list<T>b) { Node<T>* f = a.begin; Node<T>* s = b.begin; for (; ;) { if (f->material != s->material) return false; f = f->next; s = s->next; } return true; } void printListMy() { Node<T>* p = begin; while (p != nullptr) { cout << p->material.a << " " << p->material.b << endl; p = p->next; } cout << endl; } }; int main() { list<int> first; first.AddToBegin(7); first.AddToBegin(56); first.AddToBegin(13); first.printList(); first.DeleteFirst(); first.printList(); list<int> second; second.AddToBegin(167); second.AddToBegin(5); second.AddToBegin(13); second.printList(); second.DeleteFirst(); second.printList(); cout << second.Equal(first, second); cout << endl; list <F> third; F A('a', 'b'); F B('c', 'd'); F C('e', 'f'); third.AddToBegin(A); third.AddToBegin(B); third.AddToBegin(C); third.printListMy(); third.DeleteFirst(); third.printListMy(); } |
Результат работы программы:
