- •Лабораторная работа №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()
3. Функция main().
void main()
{
char ch;
try
{
list<float> list1;
list<float>::iterator litt=list1.begin();
int n;
cout<<"Input the size of the list"<<endl;
cin>>n;
list1=Create_list(n);
print_list(list1);
cout<<"Input position to insert min element"<<endl;
cin>>n;
ins(list1,min_el(list1),n);
print_list(list1);
cout<<"After deleting elements greater than average"<<endl;
Del_m(list1,Avg(list1));
print_list(list1);
cout<<"Multiplicated by max"<<endl;
mult(list1,max_el(list1));
print_list(list1);
}
catch(int)
{
cout<<"Error";
}
cin>>ch;
}
4. Результаты работы программы:
Input the size of the list
8
-49.59 34.67 13.34 15 41.69 7.24 -35.22 43.58
Input position to insert min element
5
-49.59 34.67 13.34 15 -49.59 41.69 7.24 -35.22 43.58
After deleting elements greater than average
-49.59 -49.59 -35.22
Multiplicated by max
1746.56 1746.56 1240.45
Задача 2.
5. Описание класса
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); //дружественный внешний оператор вывода
};
6. Определение компонентных и дружественных глобальных функций.
Определение компонентных функций и глобальных дружественных функций класса.
/Определение компонентных функций.
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;
}
7. Глобальные функции для выполнения заданий.
typedef list<Time> My_list;
My_list Create_list(int n)
//создание списка, заполенного случайными данными
{
My_list list1;
int t;
Time a;
for (int i=0;i<n;i++)
{
t=rand()%1000;
a.setmin(t/60);
a.setsec(t%60);
list1.push_back(a);
}
return list1;
}
void print_list(My_list& list1)
//вывод элементов списка
{
My_list::iterator it1,itend;
itend=list1.end();
it1=list1.begin();
while (it1!=itend)
cout<<*(it1++)<<" ";
cout<<endl;
}
Time min_el(My_list &list1)
//поиск минимального элемента
{
My_list::iterator it1,itmin,itend;
it1=itmin=list1.begin();
itend=list1.end();
while (it1!=itend)
{
if (*it1 <* itmin)
itmin=it1;
it1++;
}
return *itmin;
}
void ins(My_list& list1,Time a,int n)
//добавление элемента a на позицию n
{
My_list::iterator it1;
if (n>list1.size()+1)
cout<<"No such position"<<endl;
else
{
it1=list1.begin();
for (int i=0;i<n-1;i++)
it1++;
list1.insert(it1,a);
}
}
Time Avg(My_list& list1)
//нахождение среднего арифметического
{
My_list::iterator it1,itend;
Time a(0,0);
it1=list1.begin();
itend=list1.end();
while (it1!=itend)
a+=*(it1++);
a/=list1.size();
return a;
}
void Del_m(My_list& list1,Time& a)
//удаление элементов, больших a из списка
{
My_list::iterator it1;
it1=list1.begin();
while (it1!=list1.end())
{
if (*it1>a)
it1=list1.erase(it1);
else
if (it1!=list1.end())
it1++;
}
}
Time max_el(My_list &list1)
//поиск максимального элемента
{
My_list::iterator it1,itmax,itend;
it1=itmax=list1.begin();
itend=list1.end();
while (it1!=itend)
{
if (*it1 >* itmax)
itmax=it1;
it1++;
}
return *itmax;
}
void mult(My_list &list1,Time a)
//домножение всех элементов списка на время a
{
My_list::iterator it1,itend;
it1=list1.begin();
itend=list1.end();
while (it1!=itend)
(*(it1++))*=a;
}