
- •Содержание
- •Лабораторная работа №3
- •Лабораторная работа №6
- •1. Постановка задачи:
- •Лабораторная работа №11
- •1. Постановка задачи.
- •Задача 1.
- •Задача 2.
- •5. Описание класса
- •Int getrub() {return rub;} //получение количества рублей
- •Int getkop() {return kop;} //получение количества копеек
- •Задача 3.
- •Задача 4.
- •Задача 5.
- •Лабораторная работа №13
- •1. Постановка задачи. Задача 1.
- •Задача 2.
- •Задача 3.
- •2. Описание класса
- •Int getrub() {return rub;} //получение количества рублей
- •Int getkop() {return kop;} //получение количества копеек
- •Задача 1.
- •Задача 2.
- •Задача 3.
Задача 4.
14. Глобальные функции для выполнения заданий:
typedef stack<Money> My_stack;
My_stack Create_stack(int n)
//создание стека, заполенного случайными данными
{
My_stack stack1;
int t;
Money a;
for (int i=0;i<n;i++)
{
t=rand()%10000;
a.setrub(t/100);
a.setkop(t%100);
stack1.push(a);
}
return stack1;
}
void print_stack(My_stack stack1)
//вывод элементов стека
{
while (!stack1.empty())
{
cout<<stack1.top()<<" ";
stack1.pop();
}
cout<<endl;
}
Money min_el(My_stack stack1)
//поиск минимального элемента
{
Money t1,trub=stack1.top();
while (!stack1.empty())
{
t1=stack1.top();
if (t1 <trub)
trub=t1;
stack1.pop();
}
return trub;
}
void ins(My_stack& stack1,Money a,int n)
//добавление элемента a на позицию n
{
vector<Money> temp;
vector<Money>::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);
}
}
Money Avg(My_stack stack1)
//нахождение среднего арифметического
{
Money 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,Money& a)
//удаление элементов, равных a из списка
{
vector<Money> temp;
vector<Money>::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);
}
Money max_el(My_stack stack1)
//поиск максимального элемента
{
Money t1,tmax=stack1.top();
while (!stack1.empty())
{
t1=stack1.top();
if (t1 >tmax)
tmax=t1;
stack1.pop();
}
return tmax;
}
void add(My_stack &stack1,Money a)
//увеличение всех элементов стека на сумму a
{
vector<Money> temp;
vector<Money>::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);
}
15. Функция main()
void main()
{
char ch;
try
{
stack<Money> stack1;
int n;
cout<<"Input the size of the stack"<<endl;
cin>>n;
stack1=Create_stack(n);
print_stack(stack1);
ins(stack1,max_el(stack1),1);
cout<<"After inserting max element"<<endl;
print_stack(stack1);
Del_m(stack1,min_el(stack1));
cout<<"After deleting min element"<<endl;
print_stack(stack1);
add(stack1,max_el(stack1));
cout<<"Added by average"<<endl;
print_stack(stack1);
}
catch(int)
{
cout<<"Error";
}
cin>>ch;
}
16. Результаты работы программы:
Input the size of the stack
9
69,62 93,58 14,78 57,24 91,69 65,00 63,34 84,67 0,41
After inserting max element
93,58 69,62 93,58 14,78 57,24 91,69 65,00 63,34 84,67 0,41
After deleting min element
93,58 69,62 93,58 14,78 57,24 91,69 65,00 63,34 84,67
Added by average
187,16 163,20 187,16 108,36 150,82 185,27 158,58 156,92 178,25