Файл: Лабораторная работа 3 Лабораторная работа 6 Лабораторная работа 11 Лабораторная работа 13 Лабораторная работа 3.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 146
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
{
c_set.clear();
}
template
void My_Set
{
set
it1=c_set.begin();
for (;it1!=c_set.end();it1++)
cout<<*it1<<" ";
cout<
}
template
T My_Set
//поиск минимального элемента
{
set
it1=min=c_set.begin();
for (;it1!=c_set.end();it1++)
{
if (*it1<*min)
min=it1;
}
return *min;
}
template
T My_Set
//поиск максимального элемента
{
set
it1=max=c_set.begin();
for (;it1!=c_set.end();it1++)
{
if (*it1>*max)
max=it1;
}
return *max;
}
template
T My_Set
//нахождение среднего арифметического
{
set
T a;
for (;it1!=c_set.end();it1++)
a+=*it1;
a/=len;
return a;
}
template
void My_Set
//удаление элементов, равных a из контейнера
{
set
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
void My_Set
//добавление элемента a
{
c_set.insert(a);
len=c_set.size();
}
template
void My_Set
{
vector
set
while (it1!=c_set.end())
vec.push_back(*(it1++));
c_set.clear();
for (int i=0;i
c_set.insert(a+vec[i]);
}
11. Глобальные функции для выполнения заданий отсутствуют.
12. Функция main()
void main()
{
char ch;
try
{
int n;
cout<<"Input the size of the set"<
cin>>n;
My_Set
set1.prn();
cout<<"After inserting max element"<
set1.ins(set1.max_el());
set1.prn();
cout<<"After deleting min element"<
set1.Del_m(set1.min_el());
set1.prn();
cout<<"With average added"<
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
Задача 4.
14. Глобальные функции для выполнения заданий:
typedef stack My_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;
}
void print_stack(My_stack stack1)
//вывод элементов стека
{
while (!stack1.empty())
{
cout<
stack1.pop();
}
cout<
}
Money min_el(My_stack stack1)
//поиск минимального элемента
{
Money t1,trub=stack1.top();
while (!stack1.empty())
{
t1=stack1.top();
if (t1
trub=t1;
stack1.pop();
}
return trub;
}
void ins(My_stack& stack1,Money a,int n)
//добавление элемента a на позицию n
{
vector temp;
vector::reverse_iterator it1;
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);
for(it1=temp.rbegin();it1!=temp.rend();it1++)
stack1.push(*it1);
}
}
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 temp;
vector::reverse_iterator it1;
while (!stack1.empty())
{
if (!(stack1.top()==a))
temp.push_back(stack1.top());
stack1.pop();
}
for(it1=temp.rbegin();it1!=temp.rend();it1++)
stack1.push(*it1);
}
Money max_el(My_stack stack1)
//поиск максимального элемента
{
Money t1,tmax=stack1.top();
while (!stack1.empty())
{
t1=stack1.top();
if (t1 >tmax)
tmax=t1;
stack1.pop();
}
return tmax;
}
void add(My_stack &stack1,Money a)
//увеличение всех элементов стека на сумму a
{
vector temp;
vector::reverse_iterator it1;
while (!stack1.empty())
{
temp.push_back(stack1.top()+a);
stack1.pop();
}
for(it1=temp.rbegin();it1!=temp.rend();it1++)
stack1.push(*it1);
}
15. Функция main()
void main()
{
char ch;
try
{
stack stack1;
int n;
cout<<"Input the size of the stack"<
cin>>n;
stack1=Create_stack(n);
print_stack(stack1);
ins(stack1,max_el(stack1),1);
cout<<"After inserting max element"<
print_stack(stack1);
Del_m(stack1,min_el(stack1));
cout<<"After deleting min element"<
print_stack(stack1);
add(stack1,max_el(stack1));
cout<<"Added by average"<
print_stack(stack1);
}
catch(int)
{
cout<<"Error";
}
cin>>ch;
}
16. Результаты работы программы:
Input the size of the stack
9
69,62 93,58 14,78 57,24 91,69 65,00 63,34 84,67 0,41
After inserting max element
93,58 69,62 93,58 14,78 57,24 91,69 65,00 63,34 84,67 0,41
After deleting min element
93,58 69,62 93,58 14,78 57,24 91,69 65,00 63,34 84,67
Added by average
187,16 163,20 187,16 108,36 150,82 185,27 158,58 156,92 178,25
Задача 5.
17. Описание параметризованного класса.
class My_Set
{
int len; //длина контейнера
stack c_stack; //контейнер элементов множества
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
};
18. Реализация функций параметризованного класса.
template
My_Set::My_Set() {len=0;}
template
My_Set::My_Set(int s)
{
set temp;
T a;
for(int i=0;i
{
cin>>a;
temp.insert(a);
}
set::reverse_iterator it1=temp.rbegin();
len=0;
for (;it1!=temp.rend();it1++)
{
len++;
c_stack.push(*it1);
}
}
template
My_Set::
My_Set() //деструктор
Задача 4.
14. Глобальные функции для выполнения заданий:
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;
}
void print_stack(My_stack stack1)
//вывод элементов стека
{
while (!stack1.empty())
{
cout<
stack1.pop();
}
cout<
}
Money min_el(My_stack stack1)
//поиск минимального элемента
{
Money t1,trub=stack1.top();
while (!stack1.empty())
{
t1=stack1.top();
if (t1
trub=t1;
stack1.pop();
}
return trub;
}
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);
for(it1=temp.rbegin();it1!=temp.rend();it1++)
stack1.push(*it1);
}
}
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
while (!stack1.empty())
{
if (!(stack1.top()==a))
temp.push_back(stack1.top());
stack1.pop();
}
for(it1=temp.rbegin();it1!=temp.rend();it1++)
stack1.push(*it1);
}
Money max_el(My_stack stack1)
//поиск максимального элемента
{
Money t1,tmax=stack1.top();
while (!stack1.empty())
{
t1=stack1.top();
if (t1 >tmax)
tmax=t1;
stack1.pop();
}
return tmax;
}
void add(My_stack &stack1,Money a)
//увеличение всех элементов стека на сумму a
{
vector
vector
while (!stack1.empty())
{
temp.push_back(stack1.top()+a);
stack1.pop();
}
for(it1=temp.rbegin();it1!=temp.rend();it1++)
stack1.push(*it1);
}
15. Функция main()
void main()
{
char ch;
try
{
stack
int n;
cout<<"Input the size of the stack"<
cin>>n;
stack1=Create_stack(n);
print_stack(stack1);
ins(stack1,max_el(stack1),1);
cout<<"After inserting max element"<
print_stack(stack1);
Del_m(stack1,min_el(stack1));
cout<<"After deleting min element"<
print_stack(stack1);
add(stack1,max_el(stack1));
cout<<"Added by average"<
print_stack(stack1);
}
catch(int)
{
cout<<"Error";
}
cin>>ch;
}
16. Результаты работы программы:
Input the size of the stack
9
69,62 93,58 14,78 57,24 91,69 65,00 63,34 84,67 0,41
After inserting max element
93,58 69,62 93,58 14,78 57,24 91,69 65,00 63,34 84,67 0,41
After deleting min element
93,58 69,62 93,58 14,78 57,24 91,69 65,00 63,34 84,67
Added by average
187,16 163,20 187,16 108,36 150,82 185,27 158,58 156,92 178,25
Задача 5.
17. Описание параметризованного класса.
class My_Set
{
int len; //длина контейнера
stack
public:
My_Set(); //Конструктор - пустое множество
My_Set(int n); //Конструктор с параметром типа int
My_Set
template
My_Set
{
set
T a;
for(int i=0;i
{
cin>>a;
temp.insert(a);
}
set
len=0;
for (;it1!=temp.rend();it1++)
{
len++;
c_stack.push(*it1);
}
}
template
My_Set
{
while (!(c_stack.empty()))
{
c_stack.pop();
}
}
template
void My_Set
{
stack
while (!(copy.empty()))
{
cout<
copy.pop();
}
cout<
}
template
T My_Set
//поиск минимального элемента
{
T min=c_stack.top();
stack
while (!(copy.empty()))
{
if (copy.top()
min=copy.top();
copy.pop();
}
cout<
return min;
}
template
T My_Set
//поиск максимального элемента
{
T max=c_stack.top();
stack
while (!(copy.empty()))
{
if (copy.top()>max)
max=copy.top();
copy.pop();
}
cout<
return max;
}
template
T My_Set
//нахождение среднего арифметического
{
Money a;
stack
while (!(copy.empty()))
{
a+=copy.top();
copy.pop();
}
a/=len;
return a;
}
template
void My_Set
//удаление элементов, равных a из контейнера
{
set
set
while (!c_stack.empty())
{
if (!(c_stack.top()==a))
temp.insert(c_stack.top());
else len--;
c_stack.pop();
}
for(it1=temp.rbegin();it1!=temp.rend();it1++)
c_stack.push(*it1);
}
template
void My_Set
//добавление элемента a
{
set
set
while (!c_stack.empty())
{
temp.insert(c_stack.top());
c_stack.pop();
}
len=temp.size();
for(it1=temp.rbegin();it1!=temp.rend();it1++)
c_stack.push(*it1);
}
template
void My_Set
{
vector
vector
while (!c_stack.empty())
{
temp.push_back(c_stack.top()+a);
c_stack.pop();
}
for(it1=temp.rbegin();it1!=temp.rend();it1++)
c_stack.push(*it1);
}
19. Функция main()
void main()
{
char ch;
try
{
int n;
cout<<"Input the size of the set"<
cin>>n;
My_Set
set1.prn();
cout<<"After inserting max element"<
set1.ins(set1.max_el());
set1.prn();
cout<<"After deleting min element"<
set1.Del_m(set1.min_el());
set1.prn();
cout<<"With average added"<
set1.add(set1.Avg());
set1.prn();
}
catch(int)
{
cout<<"Error";
}
cin>>ch;
}
20. Результаты работы программы:
Input the size of the set
6
input rubli
12
input kopejki
30
input rubli
54
input kopejki
96
input rubli
45
input kopejki
31
input rubli
12
input kopejki
64
input rubli
3
input kopejki
12
input rubli
28
input kopejki
37
3,12 12,30 12,64 28,37 45,31 54,96
After inserting max element
3,12 12,30 12,64 28,37 45,31 54,96
After deleting min element
12,30 12,64 28,37 45,31 54,96
With average added
43,01 43,35 59,08 76,02 85,67
21.
-
Библиотека STL состоит из набора контейнерных классов и набора обобщённых алгоритмов. -
Контейнеры, существующие в STL: вектор: список, двунаправленная очередь (основные последовательные), стек, очередь, очередь с приоритетами (последовательные адаптеры), словари, множества, словари с дубликатами, множества с дубликатами (ассоциативные). -
Для использования контейнера STL необходимо подключить заголовочный файл, содержащий описание данного контейнера. -
Итератор – это объект (класс), используемый для доступа к элементам контейнера. -
Основные операции с итераторами:-
разыменование; -
присваивание одного итератора другому; -
сравнение итераторов на равенство и неравенство; -
сдвиг на соседний элемент с помощью операции инкремента(декремента).
-
-
Цикл для перебора контейнера с использованием итератора.
container cont1;
container::iterator it1;
it1=cont1.begin();
while (it1!=cont1.end())
{
…
it1++;
}
-
Типы итераторов в STL: входные, выходные, прямые, двунаправленные, итераторы произвольного доступа. -
Функции-члены, общие для всех контейнеров:-
операторы равенства (==)и неравенства (!=); -
оператор присваивания (=); -
удаление всех элементов (clear); -
добавление элемента или диапазона элементов на заданную позицию (insert); -
удаление элемента или диапазона элементов (erase); -
число элементов в контейнере (size); -
максимально допустимый размер контейнера (max_size); -
проверка на пустоту контейнера (empty); -
итератор на начало контейнера (begin); -
итератор на конец контейнера (end); -
реверсивный итератор на конец контейнера; -
реверсивный итератор на начало контейнера.
-
-
Для контейнера vector эффективными являются операции доступа к произвольному элементу, добавление элемента в конец, удаление элемента с конца, т. к. ячейки памяти, выделенные под элементы будут иметь подряд идущие адреса. -
Для контейнера list эффективными будут операции вставки и удаления в произвольной позиции, т. к. для этого нужно только поменять значения 4-х указателей, не перемещая элементы контейнера в памяти. -
Для контейнера deque эффективными будут те же операции, что и для контейнера vector, а также вставка и удаление первого элемента. -
Функции-члены последовательного контейнера vector:-
push_back(T& key) добавление в конец; -
pop_back() удаление с конца; -
insert вставка в произвольное место; -
erase удаление из произвольного места; -
[] доступ к произвольному элементу; -
swap обмен векторов; -
clear очистка вектора;
-
-
Функции-члены последовательного контейнера list:-
push_back(T& key) добавление в конец; -
pop_back() удаление с конца; -
push_front(T& key) добавление в начало; -
pop_front() удаление из начала; -
insert вставка в произвольное место; -
erase удаление из произвольного места; -
swap обмен списков; -
clear очистка списка; -
splice сцепка списков.
-
-
Функции-члены последовательного контейнера deque:-
push_back(T& key) добавление в конец; -
pop_back() удаление с конца; -
insert вставка в произвольное место; -
erase удаление из произвольного места; -
push_front(T& key) добавление в начало; -
pop_front() удаление из начала; -
[] доступ к произвольному элементу;
-
-
Удаление из вектора элементов со 2 по 5:
v.erase(v.begin()+1,v.begin()+4);
-
Удаление из вектора последнего элемента:
v.pop_back();
-
Удаление из списка элементов со 2 по 5:
My_list lst;
My_list::iterator it2,it5;
it2=it5=lst.begin();
it2++;
for(int i=0;i<4;i++)
it5++;
lst.erase(it2,it5);
-
Удаление из списка последнего элемента:
lst.pop_back();
-
Удаление из очереди элементов со 2 по 5:
dq.erase(dq.begin()+1,dq.begin()+4);
-
Удаление из очереди последнего элемента:
dq.pop_back();
-
Печать последовательного контейнера
template
void print(T &cont1)
{
T::iterator p;
p=cont1.begin();
if (cont1.empty())
cout<<”Empty”<
else
{
for(;p!=cont1.end;p++)
cout<<*p<<” “;
cout<
}
}
-
Адаптер контейнера – это контейнер, созданный на основе базового и реализующий часть его операций, необходимых для функционирования адаптера. -
stack- стек по умолчанию, реализованный на базе двусторонней очереди, stack > – стек на базе списка.
Методы контейнера stack:-
push() добавление в конец; -
pop() удаление с конца; -
top() – получение последнего элемента; -
empty() – проверка, является ли стек пустым; -
size() – размер стека.
Методы контейнера queue:-
push() добавление в конец; -
pop() удаление из начала; -
front() – получение первого элемента очереди; -
back() – получение последнего элемента очереди; -
empty() – проверка, является ли очередь пустой; -
size() – размер очереди.
Из очереди с приоритетом (priority_queue) для извлечения выбирается максимальный среди хранимых элементов,
Непосредственно удалить из стека элемент с заданным номером нельзя. Для этого нужно последовательно извлечь все элементы до заданного, а затем добавить в обратном порядке все кроме него.
Непосредственно удалить из очереди элемент с заданным номером нельзя. Для этого нужно последовательно извлечь все элементы очереди, а затем добавить в том же порядке все кроме заданного.
Печать содержимого стека
template
void print_stack(stack
{
while (!st.empty())
{
cout<
st.pop();
}
cout<
}
-
Печать содержимого очереди
template
void print_queue (stack
{
while (!q.empty())
{
cout<
q.pop();
}
cout<
}
Лабораторная работа №13
1. Постановка задачи.
Задача 1.
-
Создать последовательный контейнер – вектор. -
Заполнить его элементами типа Money, для которого перегрузить необходимые операции. -
Найти в векторе максимальный элемент и вставить его в начало вектора. -
Удалить из вектора минимальный элемент. -
Отсортировать вектор по убыванию и по возрастанию. -
Найти в векторе элемент с заданным количеством рублей. -
Добавить к каждому элементу среднее арифметическое всех элементов вектора. -
Для выполнения всех заданий использовать стандартные алгоритмы библиотеки STL.
Задача 2.
-
Создать адаптер контейнера – стек.
-
Заполнить его элементами типа Money, для которого перегрузить необходимые операции.
-
Найти в стеке максимальный элемент и вставить его в начало вектора.
-
Удалить из стека минимальный элемент.
-
Отсортировать стек по убыванию и по возрастанию.
-
Найти в стеке элемент с заданным количеством рублей.
-
Добавить к каждому элементу среднее арифметическое всех элементов вектора.
-
Для выполнения всех заданий использовать стандартные алгоритмы библиотеки STL.
Задача 3.
-
Создать ассоциативный контейнер – множество с дубликатами.
-
Заполнить его элементами типа Money, для которого перегрузить необходимые операции.
-
Найти во множестве максимальный элемент и вставить его в начало множества.
-
Удалить из множества минимальный элемент.
-
Отсортировать множество по убыванию и по возрастанию.
-
Найти в списке элемент с заданным количеством рублей.
-
Добавить к каждому элементу среднее арифметическое всех элементов вектора.
-
Для выполнения всех заданий использовать стандартные алгоритмы библиотеки STL.
2. Описание класса
class Money
{
long rub;
int kop;
public:
Money() {rub=0L;kop=0;} //конструктор без параметров
Money(long a) {rub=a; kop=0;} //конструктор с одним параметром типа int
Money(long a,int b) {rub=a; kop=b;} //конструктор с двумя параметром типа long и типа int
Money (const Money& Money1) {rub=Money1.rub; kop=Money1.kop;} //конструктор с параметром типа Money
Money() {} //деструкторСоздать адаптер контейнера – стек.
Заполнить его элементами типа Money, для которого перегрузить необходимые операции.
Найти в стеке максимальный элемент и вставить его в начало вектора.
Удалить из стека минимальный элемент.
Отсортировать стек по убыванию и по возрастанию.
Найти в стеке элемент с заданным количеством рублей.
Добавить к каждому элементу среднее арифметическое всех элементов вектора.
Для выполнения всех заданий использовать стандартные алгоритмы библиотеки STL.
Создать ассоциативный контейнер – множество с дубликатами.
Заполнить его элементами типа Money, для которого перегрузить необходимые операции.
Найти во множестве максимальный элемент и вставить его в начало множества.
Удалить из множества минимальный элемент.
Отсортировать множество по убыванию и по возрастанию.
Найти в списке элемент с заданным количеством рублей.
Добавить к каждому элементу среднее арифметическое всех элементов вектора.
Для выполнения всех заданий использовать стандартные алгоритмы библиотеки STL.
int getrub() {return rub;} //получение количества рублей
int getkop() {return kop;} //получение количества копеек
void setrub(long a) {rub=a;} //установка количества рублей
void setkop(int a) {kop=a;} //установка количества копеек
Money& operator = (const Money& ); //перегрузка оператора присваивания
Money operator + (const Money& Money1) const; //перегрузка оператора "+"
Money operator - (const Money& Money1) const; //перегрузка оператора "-"
Money operator /(int k); //перегрузка оператора "/"
Money& operator +=(Money Money1); //перегрузка оператора "+="
Money& operator /=(int k); //перегрузка оператора "/="
bool operator ==(Money Money1) const; //перегрузка оператора "равно"
bool operator !=(Money Money1) const; //перегрузка оператора "не равно"
bool operator >(Money Money1) const; //перегрузка оператора "больше"
bool operator <(Money Money1) const; //перегрузка оператора "меньше"
friend istream& operator>>(istream& in, Money& Money1); //дружественный внешний оператор ввода
friend ostream& operator<<(ostream& out, Money Money1); //дружественный внешний оператор вывода
};
3. Определение компонентных функций и глобальных дружественных функций класса.
//Определение компонентных функций.
Money& Money::operator =(const Money& Money1)
{
rub=Money1.rub;
kop=Money1.kop;
return *this;
}
Money Money::operator + (const Money& Money1) const
{
Money Money2;
Money2.rub=rub+Money1.rub+(kop+Money1.kop)/100;
Money2.kop=(kop+Money1.kop)%100;
return Money2;
}
Money Money::operator - (const Money& Money1) const
{
Money Money2;
Money2.rub=rub-Money1.rub+(100+kop-Money1.kop)/100+1;
Money2.kop=(100+kop-Money1.kop)%100;
return Money2;
}
Money Money::operator / (int k)
{
Money Money2;
long t=(100*rub+kop)/k;
Money2.rub=t/100;
Money2.kop=t%100;
return Money2;
}
Money& Money::operator += (Money Money1)
{
long t;
t=100*(rub+Money1.rub)+kop+Money1.kop;
rub=t/100;
kop=t%100;
return *this;
}
Money& Money::operator /= (int k)
{
long t=(100*rub+kop)/k;
rub=t/100;
kop=t%100;
return *this;
}
bool Money::operator ==(Money Money1) const
{
if ((rub*100+kop)==(Money1.rub*100+Money1.kop))
return true;
else
return false;
}
bool Money::operator !=(Money Money1) const
{
if ((rub*100+kop)!=(Money1.rub*100+Money1.kop))
return true;
else
return false;
}
bool Money::operator >(Money Money1) const
{
if ((rub*100+kop)>(Money1.rub*100+Money1.kop))
return true;
else
return false;
}
bool Money::operator <(Money Money1) const
{
if ((rub*100+kop)<(Money1.rub*100+Money1.kop))
return true;
else
return false;
}
// Определение глобальных функций.
istream &operator >>(istream& in, Money& Money1)
{
cout<<"input rubli\n";
in>>Money1.rub;
cout<<"input kopejki\n";
in>>Money1.kop;
return in;
}
ostream &operator <<(ostream& out,Money Money1)
{
out<
return out;
}
Задача 1.
4. Глобальные функции для выполнения заданий.
My_vector Create_vector(int n)
//создание списка, заполенного случайными данными
{
My_vector vector1;
int t;
Money a;
for (int i=0;i
{
t=rand()%10000;
a.setrub(t/100);
a.setkop(t%100);
vector1.push_back(a);
}
return vector1;
}
void out_el(Money mon1) {cout<
void print_vector(My_vector vector1)
//вывод элементов вектора
{
for_each(vector1.begin(),vector1.end(),out_el);
cout<
}
Money min_el(My_vector &vector1)
//поиск минимального элемента
{
My_vector::iterator min;
min=min_element(vector1.begin(),vector1.end());
return *min;
}
void ins(My_vector& vector1,Money a,int n)
//добавление элемента a на позицию n
{
if (n>vector1.size()+1)
cout<<"No such position"<
else
{
My_vector::iterator imon1=vector1.begin()+n-1;
vector1.insert(imon1,a);
}
}
Money Avg(My_vector& vector1)