Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПрограммированиеРГР_Матюшков.docx
Скачиваний:
3
Добавлен:
21.09.2019
Размер:
58.39 Кб
Скачать

Задача 9(№200)

Постановка задачи: Перегрузить операторы ввода и вывода для структуры Time(программа 40)

Алгоритм решения: Перегрузим операторы ввода и вывода так, чтобы координаты времени программа выдавала сама, затем мы их меняли и начальному времени присваивались новые координаты. Это будет время начала первой пары. Создаем функции для вычисления расписания времени.

Текст программы:

#include<iostream>

using namespace std;

struct Time{ //Время суток

friend ostream& operator<<(ostream&,Time&); //Оператор вывода

friend istream& operator>>(istream&,Time&); //Оператор ввода

unsigned int h,m; //Часы, минуты

void set(int hh,int mm) //Установка времени

{h=hh;m=mm;}

void AddHour(int n); //Добавить n часов

void AddMin(int n); //Добавить n минут

void Print(); //Печать времени

};

ostream& operator<<(ostream& outs,Time& d) //Перегрузка оператора вывода

{

outs<<"("<<d.h<<","<<d.m<<")";

return outs; //Возвращение потока

}

istream& operator>>(istream& ins,Time& d) //Перегрузка оператора ввода

{

return ins>>d.h>>d.m; //Чтение данных из потока и возвращение потока

}

void Time::AddHour(int n) //Добавить n часов

{

h=(h+n)%24;

}

void Time::AddMin(int n) //Добавить n минут

{

h=(h+(m+n)/60)%24;

m=(m+n)%60;

}

void Time::Print() //Печать времени

{

if(h<10)cout<<'0'<<h<<':';

else cout<<h<<':';

if(m<10)cout<<'0'<<m<<' ';

else cout<<m<<' ';

}

#include<conio.h>

void main()

{

Time Pair; //Время начала и конца очередной пары

cout<<"\n Koordinati vremeni posle ix sozdania Pair="<<Pair<<endl;

cout<<"Vvedite koordinati vremeni ";

cin>>Pair;

cout<<"Teper koordinati vremeni Pair= "<<Pair<<endl;

int Phour=1,Pmin=30; //Длительность пары в часах и минутах

int interval; //Длительность перерыва

int hh,mm;

int n; //Количество пар

cout<<"Vvedi dlitel'nost' pereriva";

cin>>interval;

cout<<"kol-vo par:";

cin>>n;

cout<<"nachalo konec\n"; //Заголовок таблицы

for(int i=0;i<n;i++)

{

Pair.Print(); //Печать времени начала пары

Pair.AddHour(Phour); //Расчет конца пары

Pair.AddMin(Pmin); //Расчет конца пары

Pair.Print(); //Печать конца пары

cout<<'\n';

Pair.AddMin(interval);

Pair.Print(); //Печать конца пары

getch();

}

}