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

12. Функция main()

void main()

{

char ch;

try

{

int n;

cout<<"Input the size of the vector"<<endl;

cin>>n;

Vect<Time> vect1(n);

vect1.prn();

cout<<"Input position to insert min element"<<endl;

cin>>n;

vect1.ins(vect1.min_el(),n);

vect1.prn();

cout<<"After deleting elements greater than average"<<endl;

vect1.Del_m(vect1.Avg());

vect1.prn();

cout<<"Multiplicated by max"<<endl;

vect1.mult(vect1.max_el());

vect1.prn();

}

catch(int)

{

cout<<"Error";

}

cin>>ch;

}

13. Результаты работы программы

Input the size of the vector

10

input minutes 4

input seconds 23

input minutes 5

input seconds 59

input minutes 3

input seconds 10

input minutes 7

input seconds 45

input minutes 20

input seconds 32

input minutes 40

input seconds 0

input minutes 11

input seconds 15

input minutes 21

input seconds 0

input minutes 13

input seconds 28

input minutes 16

input seconds 55

4:23 5:59 3:10 7:45 20:32 40:00 11:15 21:00 13:28 16:55

Input position to insert min element

6

4:23 5:59 3:10 7:45 20:32 3:10 40:00 11:15 21:00 13:28 16:55

After deleting elements greater than average

4:23 5:59 3:10 7:45 3:10 11:15

Multiplicated by max

832:50 1136:50 601:40 1472:30 601:40 2137:30

Задача 4.

14. Глобальные функции для выполнения заданий:

typedef stack<Time> My_stack;

My_stack Create_stack(int n)

//создание стека, заполенного случайными данными

{

My_stack stack1;

int t;

Time a;

for (int i=0;i<n;i++)

{

t=rand()%1000;

a.setmin(t/60);

a.setsec(t%60);

stack1.push(a);

}

return stack1;

}

void print_stack(My_stack stack1)

//вывод элементов стека

{

while (!stack1.empty())

{

cout<<stack1.top()<<" ";

stack1.pop();

}

cout<<endl;

}

Time min_el(My_stack stack1)

//поиск минимального элемента

{

Time t1,tmin=stack1.top();

while (!stack1.empty())

{

t1=stack1.top();

if (t1 <tmin)

tmin=t1;

stack1.pop();

}

return tmin;

}

void ins(My_stack& stack1,Time a,int n)

//добавление элемента a на позицию n

{

vector<Time> temp;

vector<Time>::reverse_iterator it1;

int i=1;

if (n>stack1.size()+1)

cout<<"No such position"<<endl;

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);

}

}

Time Avg(My_stack stack1)

//нахождение среднего арифметического

{

Time 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,Time& a)

//удаление элементов, больших a из списка

{

vector<Time> temp;

vector<Time>::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);

}

Time max_el(My_stack stack1)

//поиск максимального элемента

{

Time t1,tmax=stack1.top();

while (!stack1.empty())

{

t1=stack1.top();

if (t1 >tmax)

tmax=t1;

stack1.pop();

}

return tmax;

}

void mult(My_stack &stack1,Time a)

//домножение всех элементов стека на время a

{

vector<Time> temp;

vector<Time>::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);

}