- •Лабораторная работа №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()
Задача 1.
4. Глобальные функции для выполнения заданий.
typedef list<Time> My_list;
My_list Create_list(int n)
//создание списка, заполенного случайными данными
{
My_list list1;
int t;
Time a;
for (int i=0;i<n;i++)
{
t=rand()%1000;
a.setmin(t/60);
a.setsec(t%60);
list1.push_back(a);
}
return list1;
}
void out_el(Time t1) {cout<<t1<<" ";}
void print_list(My_list list1)
//вывод элементов списка
{
for_each(list1.begin(),list1.end(),out_el);
cout<<endl;
}
Time min_el(My_list &list1)
//поиск минимального элемента
{
My_list::iterator min;
min=min_element(list1.begin(),list1.end());
return *min;
}
void ins(My_list& list1,Time a,int n)
//добавление элемента a на позицию n
{
if (n>list1.size()+1)
cout<<"No such position"<<endl;
else
{
My_list::iterator it1=list1.begin();
for (int i=0;i<n-1;i++)
it1++;
list1.insert(it1,a);
}
}
Time Avg(My_list& list1)
//нахождение среднего арифметического
{
My_list::iterator it1,itend;
Time a(0,0);
it1=list1.begin();
itend=list1.end();
while (it1!=itend)
a+=*(it1++);
a/=list1.size();
return a;
}
void Del_m(My_list& list1,Time& a)
//удаление элементов, больших a из списка
{
My_list::iterator last;
last=remove_if(list1.begin(),list1.end(),bind2nd(greater<Time>(),a));
list1.erase(last,list1.end());
}
Time max_el(My_list &list1)
//поиск максимального элемента
{
My_list::iterator max;
max=max_element(list1.begin(),list1.end());
return *max;
}
void mult(My_list &list1,Time a)
//домножение всех элементов списка на время a
{
transform(list1.begin(),list1.end(),list1.begin(),bind2nd(multiplies<Time>(),a));
}
bool eq_min(Time t1,int m){return t1.getmin()==m;}
5. Функция main()
void main()
{
char ch;
try
{
My_list list1;
My_list::iterator it1;
int n,m;
cout<<"Input the size of the list"<<endl;
cin>>n;
list1=Create_list(n);
print_list(list1);
cout<<"Input position to insert min element"<<endl;
cin>>n;
ins(list1,min_el(list1),n);
print_list(list1);
cout<<"After deleting elements greater than average"<<endl;
Del_m(list1,Avg(list1));
print_list(list1);
cout<<"Ascending sort"<<endl; //сортировка по возрастанию
list1.sort();
print_list(list1);
cout<<"Descending sort"<<endl; //сортировка по убыванию
list1.sort(greater<Time>());
print_list(list1);
cout<<"Input minutes fo find"<<endl;
cin>>m;
it1=find_if(list1.begin(),list1.end(),bind2nd(ptr_fun(eq_min),m));
if (it1==list1.end())
cout<<"No element with such minutes"<<endl;
else cout<<*it1<<endl;
cout<<"Multipliceted by max"<<endl;
mult(list1,max_el(list1));
print_list(list1);
}
catch(int)
{
cout<<"Error";
}
cin>>ch;
}
6. Результаты работы программы для задачи 1.
Input the size of the list
10
0:41 7:47 5:34 8:20 2:49 12:04 7:58 5:58 16:02 7:44
Input position to insert min element
6
0:41 7:47 5:34 8:20 2:49 0:41 12:04 7:58 5:58 16:02 7:44
After deleting elements greater than average
0:41 5:34 2:49 0:41 5:58
Ascending sort
0:41 0:41 2:49 5:34 5:58
Descending sort
5:58 5:34 2:49 0:41 0:41
Input minutes fo find
2
2:49
Multiplicated by max
2136:04 1992:52 1008:22 244:38 244:38