- •Содержание
- •Лабораторная работа №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. Глобальные функции для выполнения заданий.
typedef multiset<Money> My_set;
My_set Create_set(int n)
//создание множества, заполенного случайными данными
{
My_set set1;
int t;
Money a;
for (int i=0;i<n;i++)
{
t=rand()%10000;
a.setrub(t/100);
a.setkop(t%100);
set1.insert(a);
}
return set1;
}
void out_el(Money mon1) {cout<<mon1<<" ";}
void print_set(My_set& set1)
//вывод элементов множества
{
for_each(set1.begin(),set1.end(),out_el);
cout<<endl;
}
Money min_el(My_set &set1)
//поиск минимального элемента
{
My_set::iterator min;
min=min_element(set1.begin(),set1.end());
return *min;
}
void ins(My_set& set1,Money a,int n)
//добавление элемента a на позицию n
{
if (n>set1.size()+1)
cout<<"No such position"<<endl;
else
{
My_set::iterator it1=set1.begin();
for (int i=0;i<n-1;i++)
it1++;
set1.insert(it1,a);
}
}
Money Avg(My_set set1)
//нахождение среднего арифметического
{
My_set::iterator it1,itend;
Money a(0,0);
it1=set1.begin();
itend=set1.end();
while (it1!=itend)
a+=*(it1++);
a/=set1.size();
return a;
}
void Del_m(My_set& set1,Money& a)
//удаление элементов, равных a из множества
{
My_set::iterator last;
last=remove(set1.begin(),set1.end(),a);
set1.erase(last,set1.end());
}
Money max_el(My_set &set1)
//поиск максимального элемента
{
My_set::iterator max;
max=max_element(set1.begin(),set1.end());
return *max;
}
void add(My_set &set1,Money a)
//увеличение всех элементов множества на сумму a
{
transform(set1.begin(),set1.end(),set1.begin(),bind2nd(plus<Money>(),a));
}
bool eq_rub(Money mon1,int r){return mon1.getrub()==r;}
//проверяет, равно ли количество рублей числу r
11. Функция main()
void main()
{
char ch;
try
{
My_set set1;
My_set::iterator imon1;
int n,r;
cout<<"Input the size of the set"<<endl;
cin>>n;
set1=Create_set(n);
print_set(set1);
cout<<"After inserting max element"<<endl;
ins(set1,max_el(set1),1);
print_set(set1);
cout<<"After deleting min element"<<endl;
Del_m(set1,min_el(set1));
print_set(set1);
cout<<"Ascending sort"<<endl; //сортировка по возрастанию
print_set(set1);
cout<<"Descending sort"<<endl; //сортировка по убыванию
for_each(set1.rbegin(),set1.rend(),out_el);
cout<<endl;
cout<<"Input rubles fo find"<<endl;
cin>>r;
imon1=find_if(set1.begin(),set1.end(),bind2nd(ptr_fun(eq_rub),r));
if (imon1==set1.end())
cout<<"No element with such rubles"<<endl;
else
cout<<*imon1<<endl;
cout<<"With average added"<<endl;
add(set1,Avg(set1));
print_set(set1);
}
catch(int)
{
cout<<"Error";
}
cin>>ch;
}
12. Результат работы программы для задачи 3.
Input the size of the set
7
0,41 14,78 57,24 63,34 65,00 84,67 91,69
After inserting max element
0,41 14,78 57,24 63,34 65,00 84,67 91,69 91,69
After deleting min element
14,78 57,24 63,34 65,00 84,67 91,69 91,69
Ascending sort
14,78 57,24 63,34 65,00 84,67 91,69 91,69
Descending sort
91,69 91,69 84,67 65,00 63,34 57,24 14,78
Input rubles fo find
65
65,00
With average added
81,69 124,15 130,25 131,91 151,58 158,60 158,60