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

Лабораторная работа №11

1. Постановка задачи.

Задача 1.

  1. Создать последовательный контейнер – вектор.

  2. Заполнить его элементами типа double.

  3. Найти в векторе максимальный элемент и вставить его в начало вектора.

  4. Удалить из вектора минимальный элемент.

  5. Добавить к каждому элементу среднее арифметическое всех элементов вектора.

  6. Выполнение заданий оформить в виде глобальных функций.

Задача 2.

  1. Создать последовательный контейнер – вектор

  2. Заполнить его элементами типа Money.

  3. Найти в векторе максимальный элемент и вставить его в начало вектора.

  4. Удалить из вектора минимальный элемент.

  5. Добавить к каждому элементу среднее арифметическое всех элементов вектора.

  6. Выполнение заданий оформить в виде глобальных функций.

Задача 3.

  1. Создать параметризованный класс, используя в качестве контейнера множество

  2. Заполнить его элементами типа Money.

  3. Найти в множестве максимальный элемент и вставить его в начало вектора.

  4. Удалить из множества минимальный элемент.

  5. Добавить к каждому элементу среднее арифметическое всех элементов множества.

  6. Выполнение заданий оформить в виде методов параметризованного класса.

Задача 4.

  1. Создать адаптер контейнера – стек.

  2. Заполнить его элементами типа Money, для которого перегрузить необходимые операции.

  3. Найти в стеке максимальный элемент и вставить его в начало вектора.

  4. Удалить из стека минимальный элемент.

  5. Добавить к каждому элементу среднее арифметическое всех элементов стека.

  6. Выполнение заданий оформить в виде глобальных функций.

Задача 5.

  1. Создать параметризованный класс, используя в качестве контейнера адаптер контейнера – стек.

  2. Найти в стеке максимальный элемент и вставить его в начало вектора.

  3. Удалить из стека минимальный элемент.

  4. Добавить к каждому элементу среднее арифметическое всех элементов стека.

  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