Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5 Вариант.doc
Скачиваний:
11
Добавлен:
17.09.2019
Размер:
227.84 Кб
Скачать

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;

}