- •Содержание
- •Лабораторная работа №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.
Лабораторная работа №11
1. Постановка задачи.
Задача 1.
Создать последовательный контейнер – вектор.
Заполнить его элементами типа double.
Найти в векторе максимальный элемент и вставить его в начало вектора.
Удалить из вектора минимальный элемент.
Добавить к каждому элементу среднее арифметическое всех элементов вектора.
Выполнение заданий оформить в виде глобальных функций.
Задача 2.
Создать последовательный контейнер – вектор
Заполнить его элементами типа Money.
Найти в векторе максимальный элемент и вставить его в начало вектора.
Удалить из вектора минимальный элемент.
Добавить к каждому элементу среднее арифметическое всех элементов вектора.
Выполнение заданий оформить в виде глобальных функций.
Задача 3.
Создать параметризованный класс, используя в качестве контейнера множество
Заполнить его элементами типа Money.
Найти в множестве максимальный элемент и вставить его в начало вектора.
Удалить из множества минимальный элемент.
Добавить к каждому элементу среднее арифметическое всех элементов множества.
Выполнение заданий оформить в виде методов параметризованного класса.
Задача 4.
Создать адаптер контейнера – стек.
Заполнить его элементами типа Money, для которого перегрузить необходимые операции.
Найти в стеке максимальный элемент и вставить его в начало вектора.
Удалить из стека минимальный элемент.
Добавить к каждому элементу среднее арифметическое всех элементов стека.
Выполнение заданий оформить в виде глобальных функций.
Задача 5.
Создать параметризованный класс, используя в качестве контейнера адаптер контейнера – стек.
Найти в стеке максимальный элемент и вставить его в начало вектора.
Удалить из стека минимальный элемент.
Добавить к каждому элементу среднее арифметическое всех элементов стека.
Выполнение заданий оформить в виде методов параметризованного класса.
Задача 1.
2. Функции для выполнения заданий
typedef vector<double> My_vector;
My_vector Create_vector(int n)
//создание списка, заполенного случайными данными
{
My_vector vector1;
for (int i=0;i<n;i++)
{
double a=(rand()%10000)/100.0-50.0;
vector1.push_back(a);
}
return vector1;
}
void print_vector(My_vector& vector1)
//вывод элементов вектора
{
My_vector::iterator it1,itend;
itend=vector1.end();
it1=vector1.begin();
while (it1!=itend)
cout<<*(it1++)<<" ";
cout<<endl;
}
double min_el(My_vector &vector1)
//поиск минимального элемента
{
My_vector::iterator it1,itmin,itend;
it1=itmin=vector1.begin();
itend=vector1.end();
while (it1!=itend)
{
if (*it1 <* itmin)
itmin=it1;
it1++;
}
return *itmin;
}
void ins(My_vector& vector1,double a,int n)
//добавление элемента a на позицию n
{
My_vector::iterator it1;
if (n>vector1.size()+1)
cout<<"No such position"<<endl;
else
{
it1=vector1.begin();
for (int i=0;i<n-1;i++)
it1++;
vector1.insert(it1,a);
}
}
double Avg(My_vector& vector1)
//нахождение среднего арифметического
{
My_vector::iterator it1,itend;
double a;
a=0;
it1=vector1.begin();
itend=vector1.end();
while (it1!=itend)
a+=*(it1++);
a/=vector1.size();
return a;
}
void Del_m(My_vector& vector1,double a)
//удаление элементов, равных a из вектора
{
My_vector::iterator it1;
it1=vector1.begin();
while (it1!=vector1.end())
{
if (*it1==a)
it1=vector1.erase(it1);
else
if (it1!=vector1.end())
it1++;
}
}
double max_el(My_vector &vector1)
//поиск минимального элемента
{
My_vector::iterator it1,itmax,itend;
it1=itmax=vector1.begin();
itend=vector1.end();
while (it1!=itend)
{
if (*it1 >* itmax)
itmax=it1;
it1++;
}
return *itmax;
}
void add(My_vector &vector1,double a)
//увеличение всех элементов вектора на число a
{
for (int i=0;i<vector1.size();i++)
vector1[i]+=a;
}
3. Функция main().
void main()
{
char ch;
try
{
vector<double> vector1;
int n;
cout<<"Input the size of the vector"<<endl;
cin>>n;
vector1=Create_vector(n);
print_vector(vector1);
cout<<"After inserting max element"<<endl;
ins(vector1,max_el(vector1),1);
print_vector(vector1);
cout<<"After deleting min element"<<endl;
Del_m(vector1,min_el(vector1));
print_vector(vector1);
cout<<"With average added"<<endl;
add(vector1,Avg(vector1));
print_vector(vector1);
}
catch(int)
{
cout<<"Error";
}
cin>>ch;
}
4. Результаты работы программы:
Input the size of the vector
7
-49.59 34.67 13.34 15 41.69 7.24 -35.22
After inserting max element
41.69 -49.59 34.67 13.34 15 41.69 7.24 -35.22
After deleting min element
41.69 34.67 13.34 15 41.69 7.24 -35.22
With average added
58.6057 51.5857 30.2557 31.9157 58.6057 24.1557 -18.3043