Файл: Лабораторная работа 3 Лабораторная работа 6 Лабораторная работа 11 Лабораторная работа 13 Лабораторная работа 3.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 145
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
//нахождение среднего арифметического
{
My_vector::iterator imon1,itend;
Money a(0,0);
imon1=vector1.begin();
itend=vector1.end();
while (imon1!=itend)
a+=*(imon1++);
a/=vector1.size();
return a;
}
void Del_m(My_vector& vector1,Money& a)
//удаление элементов, равных a из вектора
{
My_vector::iterator last;
last=remove(vector1.begin(),vector1.end(),a);
vector1.erase(last,vector1.end());
}
Money max_el(My_vector &vector1)
//поиск максимального элемента
{
My_vector::iterator max;
max=max_element(vector1.begin(),vector1.end());
return *max;
}
void add(My_vector &vector1,Money a)
//увеличение всех элементов вектора на сумму a
{
transform(vector1.begin(),vector1.end(),vector1.begin(),bind2nd(plus
}
bool eq_rub(Money mon1,int r){return mon1.getrub()==r;}
5. Функция main()
void main()
{
char ch;
try
{
My_list list1;
My_list::iterator it1;
int n,m;
cout<<"Input the size of the list"<
cin>>n;
list1=Create_list(n);
print_list(list1);
cout<<"Input position to insert min element"<
cin>>n;
ins(list1,min_el(list1),n);
print_list(list1);
cout<<"After deleting elements greater than average"<
Del_m(list1,Avg(list1));
print_list(list1);
cout<<"Ascending sort"<
list1.sort();
print_list(list1);
cout<<"Descending sort"<
list1.sort(greater
print_list(list1);
cout<<"Input minutes fo find"<
cin>>m;
it1=find_if(list1.begin(),list1.end(),bind2nd(ptr_fun(eq_min),m));
if (it1==list1.end())
cout<<"No element with such minutes"<
else cout<<*it1<
cout<<"Multipliceted by max"<
mult(list1,max_el(list1));
print_list(list1);
}
catch(int)
{
cout<<"Error";
}
cin>>ch;
}
6. Результаты работы программы для задачи 1.
Input the size of the vector
9
0,41 84,67 63,34 65,00 91,69 57,24 14,78 93,58 69,62
After inserting max element
93,58 0,41 84,67 63,34 65,00 91,69 57,24 14,78 93,58 69,62
After deleting min element
93,58 84,67 63,34 65,00 91,69 57,24 14,78 93,58 69,62
Ascending sort
14,78 57,24 63,34 65,00 69,62 84,67 91,69 93,58 93,58
Descending sort
93,58 93,58 91,69 84,67 69,62 65,00 63,34 57,24 14,78
Input rubles fo find
63
63,34
With average added
163,96 163,96 162,07 155,05 140,00 135,38 133,72 127,62 85,16
Задача 2.
7. Глобальные функции для выполнения заданий.
typedef stack
My_stack Create_stack(int n)
//создание стека, заполенного случайными данными
{
My_stack stack1;
int t;
Money a;
for (int i=0;i
{
t=rand()%10000;
a.setrub(t/100);
a.setkop(t%100);
stack1.push(a);
}
return stack1;
}
vector
//копирование стека в вектор
{
vector
while (!stack1.empty())
{
temp.push_back(stack1.top());
stack1.pop();
}
return temp;
}
My_stack vector_to_stack(vector
//копирование вектора в стек
{
My_stack stack1;
vector
for(it1=temp.rbegin();it1!=temp.rend();it1++)
stack1.push(*it1);
return stack1;
}
void out_el(Money mon1) {cout<
void print_stack(My_stack& stack1)
//вывод элементов стека
{
vector
for_each(temp.begin(),temp.end(),out_el);
cout<
}
Money min_el(My_stack &stack1)
//поиск минимального элемента
{
vector
vector
min=min_element(temp.begin(),temp.end());
return *min;
}
void ins(My_stack& stack1,Money a,int n)
//добавление элемента a на позицию n
{
vector
vector
int i=1;
if (n>stack1.size()+1)
cout<<"No such position"<
else
{
while (!stack1.empty())
{
if (i++==n)
temp.push_back(a);
temp.push_back(stack1.top());
stack1.pop();
}
if ((i==n))
temp.push_back(a);
stack1=vector_to_stack(temp);
}
}
Money Avg(My_stack stack1)
//нахождение среднего арифметического
{
Money a(0,0);
int s=stack1.size();
while (!stack1.empty())
{
a+=stack1.top();
stack1.pop();
}
a/=s;
return a;
}
void Del_m(My_stack& stack1,Money& a)
//удаление элементов, равных a из стека
{
vector
vector
vector
last=remove(temp.begin(),temp.end(),a);
temp.erase(last,temp.end());
stack1=vector_to_stack(temp);
}
Money max_el(My_stack &stack1)
//поиск максимального элемента
{
vector
vector
max=max_element(temp.begin(),temp.end());
return *max;
}
void add(My_stack &stack1,Money a)
//увеличение всех элементов стека на сумму a
{
vector
vector
transform(temp.begin(),temp.end(),temp.begin(),bind2nd(plus
stack1=vector_to_stack(temp);
}
bool eq_rub(Money mon1,int r){return mon1.getrub()==r;}
//проверяет, равно ли количество рублей числу r
8. Функция main()
void main()
{
char ch;
try
{
My_stack stack1;
vector
vector
int n,r;
cout<<"Input the size of the stack"<
cin>>n;
stack1=Create_stack(n);
print_stack(stack1);
cout<<"After inserting max element"<
ins(stack1,max_el(stack1),1);
print_stack(stack1);
cout<<"After deleting min element"<
Del_m(stack1,min_el(stack1));
print_stack(stack1);
cout<<"Ascending sort"<
temp=stack_to_vector(stack1);
sort(temp.begin(),temp.end());
stack1=vector_to_stack(temp);
print_stack(stack1);
cout<<"Descending sort"<
sort(temp.begin(),temp.end(),greater
stack1=vector_to_stack(temp);
print_stack(stack1);
cout<<"Input rubles fo find"<
cin>>r;
imon1=find_if(temp.begin(),temp.end(),bind2nd(ptr_fun(eq_rub),r));
if (imon1==temp.end())
cout<<"No element with such rubles"<
else cout<<*imon1<
cout<<"With average added"<
add(stack1,Avg(stack1));
print_stack(stack1);
}
catch(int)
{
cout<<"Error";
}
cin>>ch;
}
9. Результат работы программы для задачи 2.
Input the size of the stack
11
57,05 44,64 69,62 93,58 14,78 57,24 91,69 65,00 63,34 84,67 0,41
After inserting max element
93,58 57,05 44,64 69,62 93,58 14,78 57,24 91,69 65,00 63,34 84,67 0,41
After deleting min element
93,58 57,05 44,64 69,62 93,58 14,78 57,24 91,69 65,00 63,34 84,67
Ascending sort
14,78 44,64 57,05 57,24 63,34 65,00 69,62 84,67 91,69 93,58 93,58
Descending sort
93,58 93,58 91,69 84,67 69,62 65,00 63,34 57,24 57,05 44,64 14,78
Input rubles fo find
57
57,24
With average added
160,41 160,41 158,52 151,50 136,45 131,83 130,17 124,07 123,88 111,47 81,61
Задача 3.
10. Глобальные функции для выполнения заданий.
typedef multiset
My_set Create_set(int n)
//создание множества, заполенного случайными данными
{
My_set set1;
int t;
Money a;
for (int i=0;i
{
t=rand()%10000;
a.setrub(t/100);
a.setkop(t%100);
set1.insert(a);
}
return set1;
}
void out_el(Money mon1) {cout<
void print_set(My_set& set1)
//вывод элементов множества
{
for_each(set1.begin(),set1.end(),out_el);
cout<
}
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"<
else
{
My_set::iterator it1=set1.begin();
for (int i=0;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
}
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"<
cin>>n;
set1=Create_set(n);
print_set(set1);
cout<<"After inserting max element"<
ins(set1,max_el(set1),1);
print_set(set1);
cout<<"After deleting min element"<
Del_m(set1,min_el(set1));
print_set(set1);
cout<<"Ascending sort"<
print_set(set1);
cout<<"Descending sort"<
for_each(set1.rbegin(),set1.rend(),out_el);
cout<
cout<<"Input rubles fo find"<
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"<
else
cout<<*imon1<
cout<<"With average added"<
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