- •Содержание
- •Лабораторная работа №3
- •Лабораторная работа №6
- •1. Постановка задачи:
- •Лабораторная работа №11
- •1. Постановка задачи.
- •Задача 1.
- •Задача 2.
- •5. Описание класса
- •Int getrub() {return rub;} //получение количества рублей
- •Int getkop() {return kop;} //получение количества копеек
- •Задача 3.
- •Задача 4.
- •Задача 5.
- •Лабораторная работа №13
- •1. Постановка задачи. Задача 1.
- •Задача 2.
- •Задача 3.
- •2. Описание класса
- •Int getrub() {return rub;} //получение количества рублей
- •Int getkop() {return kop;} //получение количества копеек
- •Задача 1.
- •Задача 2.
- •Задача 3.
Задача 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