
- •Содержание
- •Лабораторная работа №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.
Задача 2.
5. Описание класса
class Money
{
long rub;
int kop;
public:
Money() {rub=0L;kop=0;} //конструктор без параметров
Money(long a) {rub=a; kop=0;} //конструктор с одним параметром типа int
Money(long a,int b) {rub=a; kop=b;} //конструктор с двумя параметром типа long и типа int
Money (const Money& Money1) {rub=Money1.rub; kop=Money1.kop;} //конструктор с параметром типа Money
~Money() {} //деструктор
Int getrub() {return rub;} //получение количества рублей
Int getkop() {return kop;} //получение количества копеек
void setrub(long a) {rub=a;} //установка количества рублей
void setkop(int a) {kop=a;} //установка количества копеек
Money& operator = (const Money& ); //перегрузка оператора присваивания
Money operator + (const Money& Money1) const; //перегрузка оператора "+"
Money operator - (const Money& Money1) const; //перегрузка оператора "-"
Money operator /(int k); //перегрузка оператора "/"
Money& operator +=(Money Money1); //перегрузка оператора "+="
Money& operator /=(int k); //перегрузка оператора "/="
bool operator ==(Money Money1) const; //перегрузка оператора "равно"
bool operator !=(Money Money1) const; //перегрузка оператора "не равно"
bool operator >(Money Money1) const; //перегрузка оператора "больше"
bool operator <(Money Money1) const; //перегрузка оператора "меньше"
friend istream& operator>>(istream& in, Money& Money1); //дружественный внешний оператор ввода
friend ostream& operator<<(ostream& out, Money Money1); //дружественный внешний оператор вывода
};
6. Определение компонентных функций и глобальных дружественных функций класса.
//Определение компонентных функций.
Money& Money::operator =(const Money& Money1)
{
rub=Money1.rub;
kop=Money1.kop;
return *this;
}
Money Money::operator + (const Money& Money1) const
{
Money Money2;
Money2.rub=rub+Money1.rub+(kop+Money1.kop)/100;
Money2.kop=(kop+Money1.kop)%100;
return Money2;
}
Money Money::operator - (const Money& Money1) const
{
Money Money2;
Money2.rub=rub-Money1.rub+(100+kop-Money1.kop)/100+1;
Money2.kop=(100+kop-Money1.kop)%100;
return Money2;
}
Money Money::operator / (int k)
{
Money time2;
long t=(100*rub+kop)/k;
time2.rub=t/100;
time2.kop=t%100;
return time2;
}
Money& Money::operator += (Money Money1)
{
long t;
t=100*(rub+Money1.rub)+kop+Money1.kop;
rub=t/100;
kop=t%100;
return *this;
}
Money& Money::operator /= (int k)
{
long t=(100*rub+kop)/k;
rub=t/100;
kop=t%100;
return *this;
}
bool Money::operator ==(Money Money1) const
{
if ((rub*100+kop)==(Money1.rub*100+Money1.kop))
return true;
else
return false;
}
bool Money::operator !=(Money Money1) const
{
if ((rub*100+kop)!=(Money1.rub*100+Money1.kop))
return true;
else
return false;
}
bool Money::operator >(Money Money1) const
{
if ((rub*100+kop)>(Money1.rub*100+Money1.kop))
return true;
else
return false;
}
bool Money::operator <(Money Money1) const
{
if ((rub*100+kop)<(Money1.rub*100+Money1.kop))
return true;
else
return false;
}
// Определение глобальных функций.
istream &operator >>(istream& in, Money& Money1)
{
cout<<"input rubli\n";
in>>Money1.rub;
cout<<"input kopejki\n";
in>>Money1.kop;
return in;
}
ostream &operator <<(ostream& out,Money Money1)
{
out<<Money1.rub<<","<<(Money1.kop)/10<<(Money1.kop)%10;
return out;
}
7. Глобальные функции для выполнения заданий.
typedef vector<Money> My_vector;
My_vector Create_vector(int n)
//создание списка, заполенного случайными данными
{
My_vector vector1;
Money a;
long t;
for (int i=0;i<n;i++)
{
t=rand()%10000;
a.setrub(t/100);
a.setkop(t%100);
vector1.push_back(a);
}
return vector1;
}
void print_vector(My_vector& vector1)
//вывод элементов вектора
{
My_vector::iterator it1,itend;
itend=vector1.end();
it1=vector1.begin();
while (it1!=itend)
cout<<*(it1++)<<" ";
cout<<endl;
}
Money min_el(My_vector &vector1)
//поиск минимального элемента
{
My_vector::iterator it1,itmin,itend;
it1=itmin=vector1.begin();
itend=vector1.end();
while (it1!=itend)
{
if (*it1 <* itmin)
itmin=it1;
it1++;
}
return *itmin;
}
void ins(My_vector& vector1,Money a,int n)
//добавление элемента a на позицию n
{
My_vector::iterator it1;
if (n>vector1.size()+1)
cout<<"No such position"<<endl;
else
{
it1=vector1.begin();
for (int i=0;i<n-1;i++)
it1++;
vector1.insert(it1,a);
}
}
Money Avg(My_vector& vector1)
//нахождение среднего арифметического
{
My_vector::iterator it1,itend;
Money a;
a=0;
it1=vector1.begin();
itend=vector1.end();
while (it1!=itend)
a+=*(it1++);
a/=vector1.size();
return a;
}
void Del_m(My_vector& vector1,Money a)
//удаление элементов, равных a из вектора
{
My_vector::iterator it1;
it1=vector1.begin();
while (it1!=vector1.end())
{
if (*it1==a)
it1=vector1.erase(it1);
else
if (it1!=vector1.end())
it1++;
}
}
Money max_el(My_vector &vector1)
//поиск минимального элемента
{
My_vector::iterator it1,itmax,itend;
it1=itmax=vector1.begin();
itend=vector1.end();
while (it1!=itend)
{
if (*it1 >* itmax)
itmax=it1;
it1++;
}
return *itmax;
}
void add(My_vector &vector1,Money a)
//увеличение всех элементов вектора на число a
{
for (int i=0;i<vector1.size();i++)
vector1[i]+=a;
}
8. Функция main()
void main()
{
char ch;
try
{
vector<Money> vector1;
int n;
cout<<"Input the size of the vector"<<endl;
cin>>n;
vector1=Create_vector(n);
print_vector(vector1);
cout<<"After inserting max element"<<endl;
ins(vector1,max_el(vector1),1);
print_vector(vector1);
cout<<"After deleting min element"<<endl;
Del_m(vector1,min_el(vector1));
print_vector(vector1);
cout<<"With average added"<<endl;
add(vector1,Avg(vector1));
print_vector(vector1);
}
catch(int)
{
cout<<"Error";
}
cin>>ch;
}
9. Результаты работы программы
Input the size of the vector
10
0,41 84,67 63,34 65,00 91,69 57,24 14,78 93,58 69,62 44,64
After inserting max element
93,58 0,41 84,67 63,34 65,00 91,69 57,24 14,78 93,58 69,62 44,64
After deleting min element
93,58 84,67 63,34 65,00 91,69 57,24 14,78 93,58 69,62 44,64
With average added
161,39 152,48 131,15 132,81 159,50 125,05 82,59 161,39 137,43 112,45