Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти та науки України
Кафедра АСУ
Лабораторна робота №5
з дисципліни ООП
“ Шаблонні класи С++”
Мета: ознайомитись зі структурою, синтаксисом та семантикою шаблонних класів С++, навчитись їх застосовувати при будові програмних систем.
Послідовність роботи:
Ознайомитись з теоретичним матеріалом про шаблонні класи.
Проаналізувати результат роботи прикладу програми з використанням шаблонного класу для роботи з векторами елементів визначених типів.
Виконати програму для інших значень параметрів шаблонного класу.
Для заданого варіанта завдання написати з використанням шаблонних класів.
Оформити звіт про роботу за такою структурою:
Назва роботи;
Мета роботи;
Послідовність роботи;
Індивідуальне завдання;
Текст програми;
Контрольний приклад та результати роботи програми;
Висновки;
Індивідуальне завдання: створити шаблонний клас – однозв’язний кільцевий список у динамічній пам’яті. Тип елементів черги визначається параметром шаблона. Передбачити функції для виконання таких операцій: занесення заданого елемента до списку, пошук мінімального та максимального елементів, виведення елементів списку на екран.
Лістинг програми (код програми):
#include <iostream>
#include <conio.h>
using namespace std;
template <typename X>
class list {
private:
struct A{
A *next;
X data;
};
A *head;
A *last;
public:
list(){ head=NULL;
last=NULL;
}
~list(){}
void add(X x){
if(!head){
A *tmp=new A;
tmp->data=x;
tmp->next=head;
head=tmp;
last=tmp;
} else {
A *tmp=new A;
tmp->data=x;
last->next=tmp;
last=tmp;
last->next=head;
}
}
X list::FindMax() {
X max=head->data;
for(A *tmp=head; tmp!=last; tmp=tmp->next) {
if (tmp->data>max) max=tmp->data;
}
return max;
}
X list::FindMin() {
X min=head->data;
for(A *tmp=head; tmp!=last; tmp=tmp->next) {
if (tmp->data<min) min=tmp->data;
}
return min;
}
void OutList() {
for(A *tmp=head ; tmp!=last; tmp=tmp->next) {
cout<<tmp->data<<" ";
}
cout<<endl;
}
};
int main() {
list<int> My;
My.add(3);
My.add(5);
My.add(17);
My.add(2);
My.add(0); // last element zero
My.OutList();
cout<<"Max="<<My.FindMax()<<endl;
cout<<"Min="<<My.FindMin()<<endl;
_getch();
return 0;
}
Скріншот виконання програми:
Висновок: виконуючи дану лабораторну роботу, я ознайомився зі структурою, синтаксисом та семантикою шаблонних класів С++, навчився їх застосовувати при будові програмних систем.