Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы / лаба 13 прога

.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
51.28 Кб
Скачать

Ф ЕДЕРАЛЬНОЕ АГЕНСТВО ВОЗДУШНОГО ТРАНСПОРТА

(РОСАВИАЦИЯ)

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ГРАЖДАНСКОЙ АВИАЦИИ» (МГТУ ГА)

Кафедра вычислительных машин, комплексов, систем и сетей.

Лабораторная работа защищена с оценкой ____________________

____________________

(подпись преподавателя, дата)

ЛАБОРАТОРНАЯ РАБОТА №13

по дисциплине «Программирование».

Вариант №17

Тема: «Разработка шаблонов абстрактных типов данных с перегрузкой в них ряда операций.»

Выполнила студентка группы ИС 1-1

Магальник Екатерина Борисовна

Руководитель: Белозуб Юлия Валерьевна

МОСКВА – 2023

    1. Цель лабораторной работы

Целью лабораторной работы является получение практических навыков обобщенного программирования с использованием механизма шаблонов классов и функций для создания абстрактных типов данных и перегрузки стандартных операций для этих типов.

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();

}

Результат работы программы: