- •Лабораторная работа №6
- •1. Постановка задачи:
- •5. Функция main()
- •Лабораторная работа №11
- •1. Постановка задачи.
- •Задача 1.
- •3. Функция main().
- •Задача 2.
- •5. Описание класса
- •Int getmin() {return min;} //получение количества минут
- •Int getsec() {return sec;} //получение количества секунд
- •8. Функция main()
- •Задача 3.
- •12. Функция main()
- •Задача 4.
- •15. Функция main()
- •Задача 5.
- •19. Функция main()
- •Лабораторная работа №13
- •1. Постановка задачи. Задача 1.
- •Задача 2.
- •Задача 3.
- •2. Описание класса
- •Int getmin() {return min;} //получение количества минут
- •Int getsec() {return sec;} //получение количества секунд
- •Задача 1.
- •5. Функция main()
- •Задача 2.
- •8. Функция main()
- •Задача 3.
- •11. Функция main()
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);
}