Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6 Вариант.doc
Скачиваний:
7
Добавлен:
17.09.2019
Размер:
355.33 Кб
Скачать

Задача 3.

10. Описание параметризованного класса.

template <class T>

class My_Set

{

int len; //длина контейнера

set<T> c_set; //контейнер элементов множества

public:

My_Set(); //Конструктор - пустое множество

My_Set(int n); //Конструктор с параметром типа int

~My_Set(); //деструктор

void prn(); //печать элементов контейнера

T min_el(); //величина минимального элемента

T max_el(); //величина максимального элемента

T Avg(); //среднее арифметическое элементов контейнера

void Del_m(T a); //удаление элементов,равных a

void ins(T a); //вставка элемента a

void add(T a); //увеличение всех элементов контейнера на величину a

};

template <class T>

My_Set<T>::My_Set() {len=0;}

template <class T>

My_Set<T>::My_Set(int s)

{

T a;

len=s;

for(int i=0;i<s;i++)

{

cin>>a;

c_set.insert(a);

}

}

template <class T>

My_Set<T>::~My_Set() //деструктор

{

c_set.clear();

}

template <class T>

void My_Set<T>::prn()

{

set<T>::iterator it1;

it1=c_set.begin();

for (;it1!=c_set.end();it1++)

cout<<*it1<<" ";

cout<<endl;

}

template <class T>

T My_Set<T>::min_el()

//поиск минимального элемента

{

set<T>::iterator it1,min;

it1=min=c_set.begin();

for (;it1!=c_set.end();it1++)

{

if (*it1<*min)

min=it1;

}

return *min;

}

template <class T>

T My_Set<T>::max_el()

//поиск максимального элемента

{

set<T>::iterator it1,max;

it1=max=c_set.begin();

for (;it1!=c_set.end();it1++)

{

if (*it1>*max)

max=it1;

}

return *max;

}

template <class T>

T My_Set<T>::Avg()

//нахождение среднего арифметического

{

set<T>::iterator it1=c_set.begin();

T a;

for (;it1!=c_set.end();it1++)

a+=*it1;

a/=len;

return a;

}

template <class T>

void My_Set<T>::Del_m(T a)

//удаление элементов, равных a из контейнера

{

set<T>::iterator it1;

it1=c_set.begin();

while (it1!=c_set.end())

{

if (*it1==a)

{

it1=c_set.erase(it1);

len--;

}

else

if (it1!=c_set.end())

it1++;

}

}

template <class T>

void My_Set<T>::ins(T a)

//добавление элемента a

{

c_set.insert(a);

len=c_set.size();

}

template <class T>

void My_Set<T>::add(T a)

{

vector<T> vec;

set<T>::iterator it1=c_set.begin();

while (it1!=c_set.end())

vec.push_back(*(it1++));

c_set.clear();

for (int i=0;i<len;i++)

c_set.insert(a+vec[i]);

}

11. Глобальные функции для выполнения заданий отсутствуют.

12. Функция main()

void main()

{

char ch;

try

{

int n;

cout<<"Input the size of the set"<<endl;

cin>>n;

My_Set<Money> set1(n);

set1.prn();

cout<<"After inserting max element"<<endl;

set1.ins(set1.max_el());

set1.prn();

cout<<"After deleting min element"<<endl;

set1.Del_m(set1.min_el());

set1.prn();

cout<<"With average added"<<endl;

set1.add(set1.Avg());

set1.prn();

}

catch(int)

{

cout<<"Error";

}

cin>>ch;

}

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

Input the size of the set

6

input rubli

45

input kopejki

12

input rubli

35

input kopejki

65

input rubli

10

input kopejki

00

input rubli

42

input kopejki

89

input rubli

43

input kopejki

21

input rubli

53

input kopejki

64

10,00 35,65 42,89 43,21 45,12 53,64

After inserting max element

10,00 35,65 42,89 43,21 45,12 53,64

After deleting min element

35,65 42,89 43,21 45,12 53,64

With average added

79,75 86,99 87,31 89,22 97,74