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

Задача 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