- •Лабораторная работа №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()
Лабораторная работа №13
1. Постановка задачи. Задача 1.
Создать последовательный контейнер – список.
Заполнить его элементами типа Time, для которого перегрузить необходимые операции.
Найти в списке минимальный элемент и вставить его на заданную позицию.
Удалить из списка элементы, которые больше среднего арифметического.
Отсортировать список по убыванию и по возрастанию.
Найти в списке элемент с заданным количеством минут.
Умножить все элементы списка на максимальный элемент.
Для выполнения всех заданий использовать стандартные алгоритмы библиотеки STL.
Задача 2.
Создать адаптер контейнера – стек.
Заполнить его элементами типа Time, для которого перегрузить необходимые операции.
Найти в стеке минимальный элемент и вставить его на заданную позицию.
Удалить из стека элементы, которые больше среднего арифметического.
Отсортировать стек по убыванию и по возрастанию.
Найти в стеке элемент с заданным количеством минут.
Умножить все элементы стека на максимальный элемент.
Для выполнения всех заданий использовать стандартные алгоритмы библиотеки STL.
Задача 3.
Создать ассоциативный контейнер – множество.
Заполнить его элементами типа Time, для которого перегрузить необходимые операции.
Найти в множестве минимальный элемент и вставить его на заданную позицию.
Удалить из множества элементы, которые больше среднего арифметического.
Отсортировать множетсво по убыванию и по возрастанию.
Найти в множестве элемент с заданным количеством минут.
Умножить все элементы множества на максимальный элемент.
Для выполнения всех заданий использовать стандартные алгоритмы библиотеки STL.
2. Описание класса
class Time
{
int min,sec;
public:
Time () {min=0;sec=0;} //конструктор без параметров
Time(int a) {min=a; sec=0;} //конструктор с одним параметром типа int
Time(int a,int b) {min=a; sec=b;} //конструктор с двумя параметром типа int
Time (const Time& time1) {min=time1.min; sec=time1.sec;} //конструктор с параметром типа Time
~Time() {} //деструктор
Int getmin() {return min;} //получение количества минут
Int getsec() {return sec;} //получение количества секунд
void setmin(int a) {min=a;} //установка количества минут
void setsec(int a) {sec=a;} //установка количества секунд
Time& operator = (const Time& time1); //перегрузка оператора присваивания
Time operator +(Time time1); //перегрузка оператора "+"
Time operator *(Time time1) const; //перегрузка оператора "*"
Time operator /(int k); //перегрузка оператора "/"
Time& operator +=(Time time1); //перегрузка оператора "+="
Time& operator *=(Time time1); //перегрузка оператора "*="
Time& operator /=(int k); //перегрузка оператора "/="
bool operator ==(Time time1) const; //перегрузка оператора "равно"
bool operator !=(Time time1) const; //перегрузка оператора "не равно"
bool operator >(Time time1) const; //перегрузка оператора "больше"
bool operator <(Time time1) const; //перегрузка оператора "меньше"
friend istream& operator>>(istream& in, Time& time1); //дружественный внешний оператор ввода
friend ostream& operator<<(ostream& out, Time time1); //дружественный внешний оператор вывода
};
3. Определение компонентных функций и глобальных дружественных функций класса.
/Определение компонентных функций.
Time& Time::operator =(const Time& time1)
{
min=time1.min;
sec=time1.sec;
return *this;
}
Time Time::operator + (Time time1)
{
Time time2;
int t;
t=60*(min+time1.min)+sec+time1.sec;
time2.min=t/60;
time2.sec=t%60;
return time2;
}
Time Time::operator * (Time time1) const
{
Time time2;
int t;
t=(60*min+sec)*(time1.min*60+time1.sec);
time2.min=t/60;
time2.sec=t%60;
return time2;
}
Time Time::operator / (int k)
{
Time time2;
int t=(60*min+sec)/k;
time2.min=t/60;
time2.sec=t%60;
return time2;
}
Time& Time::operator += (Time time1)
{
int t;
t=60*(min+time1.min)+sec+time1.sec;
min=t/60;
sec=t%60;
return *this;
}
Time& Time::operator *= (Time time1)
{
int t;
t=(60*min+sec)*(time1.min*60+time1.sec);
min=t/60;
sec=t%60;
return *this;
}
Time& Time::operator /= (int k)
{
int t=(60*min+sec)/k;
min=t/60;
sec=t%60;
return *this;
}
bool Time::operator ==(Time time1) const
{
if ((min*60+sec)==(time1.min*60+time1.sec))
return true;
else
return false;
}
bool Time::operator !=(Time time1) const
{
if ((min*60+sec)!=(time1.min*60+time1.sec))
return true;
else
return false;
}
bool Time::operator >(Time time1) const
{
if ((min*60+sec)>(time1.min*60+time1.sec))
return true;
else
return false;
}
bool Time::operator <(Time time1) const
{
if ((min*60+sec)<(time1.min*60+time1.sec))
return true;
else
return false;
}
// Определение глобальных функций.
istream &operator >>(istream& in, Time& time1)
{
cout<<"input minutes ";
in>>time1.min;
cout<<"input seconds ";
in>>time1.sec;
cout<<endl;
return in;
}
ostream &operator <<(ostream& out,Time time1)
{
out<<time1.min<<":"<<time1.sec/10<<time1.sec%10;
return out;
}