S
shilovec5377
Всем привет. Условие задачи:
Реализовать класс Time, который содержит три поля типаint, предназначенные для хранения часов, минут и секунд. Перегрузить операцииввода–выводав поток, которые работают с объектами данного класса в следующем формате: ЧЧ:ММ:СС. Перегрузить операторы инкремента(++) и декремента(--), которые работают в обеих формах: префиксной и постфиксной. Увеличение или уменьшение времени выполнять для поля секунд, корректировка полей минут и часов выполняется только в случае переполнения поля секунд и/или минут соответственно. В функцииmain привести примеры реализации классаTime.
Подскажите как можно сделать корректировку:
корректировка полей минут и часов выполняется только в случае переполнения поля секунд и/или минут соответственно
C++:
#include <iostream>
#include <windows.h>
using namespace std;
class Time {
int m_Hours;
int m_Minutes;
int m_Seconds;
public:
Time()// конструктор по умолчанию который
{
m_Hours = 0;
m_Minutes = 0;
m_Seconds = 0;
}
Time(const int &hours, const int &minutes, const int &seconds) {
m_Hours = hours;
m_Minutes = minutes;
m_Seconds = seconds;
}
void ShowTime()
{
cout << m_Hours << " : " << m_Minutes << " : " << m_Seconds << endl;
}
// префиксная форма
int operator++()
{
return (*this).m_Seconds++;
}
int operator--()
{
return (*this).m_Seconds--;
}
// постфиксная форма
int operator++(int)
{
return ++(*this).m_Seconds;
}
int operator--(int)
{
return --(*this).m_Seconds;
}
ostream &operator<<(ostream &out)
{
cout << "\nFrom overload << operator: ";
out << (*this).m_Hours << ":" << (*this).m_Minutes << ":" << (*this).m_Seconds;
return out;
}
istream &operator>>(istream &in)
{
cout << "\nEnter hours: ";
cin >> (*this).m_Hours;
cout << "Enter minutes: ";
cin >> (*this).m_Minutes;
cout << "Enter secods: ";
cin >> (*this).m_Seconds;
return in;
}
};
int main(void) {
Time time(12, 32, 12);
time.ShowTime();
time++;
time.ShowTime();
time--;
time.ShowTime();
++time;
time.ShowTime();
--time;
time.ShowTime();
time << cout;
time >> cin;
time.ShowTime();
system("pause");
return 0;
}