- •Содержание
- •Лабораторная работа №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.
Лабораторная работа №13
1. Постановка задачи. Задача 1.
Создать последовательный контейнер – вектор.
Заполнить его элементами типа Money, для которого перегрузить необходимые операции.
Найти в векторе максимальный элемент и вставить его в начало вектора.
Удалить из вектора минимальный элемент.
Отсортировать вектор по убыванию и по возрастанию.
Найти в векторе элемент с заданным количеством рублей.
Добавить к каждому элементу среднее арифметическое всех элементов вектора.
Для выполнения всех заданий использовать стандартные алгоритмы библиотеки STL.
Задача 2.
Создать адаптер контейнера – стек.
Заполнить его элементами типа Money, для которого перегрузить необходимые операции.
Найти в стеке максимальный элемент и вставить его в начало вектора.
Удалить из стека минимальный элемент.
Отсортировать стек по убыванию и по возрастанию.
Найти в стеке элемент с заданным количеством рублей.
Добавить к каждому элементу среднее арифметическое всех элементов вектора.
Для выполнения всех заданий использовать стандартные алгоритмы библиотеки STL.
Задача 3.
Создать ассоциативный контейнер – множество с дубликатами.
Заполнить его элементами типа Money, для которого перегрузить необходимые операции.
Найти во множестве максимальный элемент и вставить его в начало множества.
Удалить из множества минимальный элемент.
Отсортировать множество по убыванию и по возрастанию.
Найти в списке элемент с заданным количеством рублей.
Добавить к каждому элементу среднее арифметическое всех элементов вектора.
Для выполнения всех заданий использовать стандартные алгоритмы библиотеки STL.
2. Описание класса
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); //дружественный внешний оператор вывода
};
3. Определение компонентных функций и глобальных дружественных функций класса.
//Определение компонентных функций.
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 Money2;
long t=(100*rub+kop)/k;
Money2.rub=t/100;
Money2.kop=t%100;
return Money2;
}
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;
}