- •Лабораторная работа №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()
15. Функция main()
void main()
{
char ch;
try
{
stack<Time> stack1;
int n;
cout<<"Input the size of the stack"<<endl;
cin>>n;
stack1=Create_stack(n);
print_stack(stack1);
cout<<"Input position to insert min element"<<endl;
cin>>n;
ins(stack1,min_el(stack1),n);
print_stack(stack1);
Del_m(stack1,Avg(stack1));
cout<<"After deleting elements greater than average"<<endl;
print_stack(stack1);
mult(stack1,max_el(stack1));
cout<<"Multiplicated by max"<<endl;
print_stack(stack1);
}
catch(int)
{
cout<<"Error";
}
cin>>ch;
}
16. Результаты работы программы:
Input the size of the stack
9
16:02 5:58 7:58 12:04 2:49 8:20 5:34 7:47 0:41
Input position to insert min element
3
16:02 5:58 0:41 7:58 12:04 2:49 8:20 5:34 7:47 0:41
After deleting elements greater than average
5:58 0:41 2:49 5:34 0:41
Multiplicated by max
2136:04 244:38 1008:22 1992:52 244:38
Задача 5.
17. Описание параметризованного класса.
template <class T>
class Vect
{
stack<T> c_stack; //последовательный контейнер для хранения элементов
int len; //длина контейнера
public:
Vect();
Vect(int s);
//конструктор с параметром типа int - длиной создаваемого контейнера
~Vect(); //деструктор
void prn(); //печать элементов контейнера
T min_el(); //величина минимального элемента
T max_el(); //величина максимального элемента
T Avg(); //среднее арифметическое элементов контейнера
void Del_m(T a); //удаление элементов, больших a
void ins(T a,int n); //вставка элемента a на позицию n
void mult(T a); //умножение всех элементов контейнера на величину a
};
18. Реализация функций параметризованного класса.
template <class T>
Vect<T>::Vect() {len=0;}
template <class T>
Vect<T>::Vect(int s)
{
T a;
len=s;
for(int i=0;i<s;i++)
{
cin>>a;
c_stack.push(a);
}
}
template <class T>
Vect<T>::~Vect() //деструктор
{
while (!(c_stack.empty()))
{
c_stack.pop();
}
}
template <class T>
void Vect<T>::prn()
{
stack<T> copy=c_stack;
while (!(copy.empty()))
{
cout<<copy.top()<<" ";
copy.pop();
}
cout<<endl;
}
template <class T>
T Vect<T>::min_el()
//поиск минимального элемента
{
T min=c_stack.top();
stack<T> copy=c_stack;
while (!(copy.empty()))
{
if (copy.top()<min)
min=copy.top();
copy.pop();
}
cout<<endl;
return min;
}
template <class T>
T Vect<T>::max_el()
//поиск максимального элемента
{
T max=c_stack.top();
stack<T> copy=c_stack;
while (!(copy.empty()))
{
if (copy.top()>max)
max=copy.top();
copy.pop();
}
cout<<endl;
return max;
}
template <class T>
T Vect<T>::Avg()
//нахождение среднего арифметического
{
Time a;
stack<T> copy=c_stack;
while (!(copy.empty()))
{
a+=copy.top();
copy.pop();
}
a/=len;
return a;
}
template <class T>
void Vect<T>::Del_m(T a)
//удаление элементов, больших a из контейнера
{
vector<Time> temp;
vector<Time>::reverse_iterator it1;
while (!c_stack.empty())
{
if (!(c_stack.top()>a))
temp.push_back(c_stack.top());
else len--;
c_stack.pop();
}
for(it1=temp.rbegin();it1!=temp.rend();it1++)
c_stack.push(*it1);
}
template <class T>
void Vect<T>::ins(T a,int n)
//добавление элемента a на позицию n
{
vector<Time> temp;
vector<Time>::reverse_iterator it1;
int i=1;
if (n>len+1)
cout<<"No such position"<<endl;
else
{
while (!c_stack.empty())
{
if (i++==n)
temp.push_back(a);
temp.push_back(c_stack.top());
c_stack.pop();
}
if ((i==n))
temp.push_back(a);
for(it1=temp.rbegin();it1!=temp.rend();it1++)
c_stack.push(*it1);
}
len++;
}
template <class T>
void Vect<T>::mult(T a)
{
vector<Time> temp;
vector<Time>::reverse_iterator it1;
while (!c_stack.empty())
{
temp.push_back(c_stack.top()*a);
c_stack.pop();
}
for(it1=temp.rbegin();it1!=temp.rend();it1++)
c_stack.push(*it1);
}