Реализовать класс time, который содержит три поля типа int

Тема в разделе "MS Visual C++", создана пользователем shilovec5377, 6 июн 2015.

  1. shilovec5377

    shilovec5377 Member

    Репутация:
    0
    Регистрация:
    13 апр 2012
    Сообщения:
    12
    Симпатии:
    0
    Всем привет. Условие задачи:
    Код:
    #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;
    }
     
  2. rrrFer

    rrrFer Гость

    Репутация:
    0
    Ну сейчас я так понимаю корректировка вообще не выполняется.

    В операторах ++ и -- у вас может получиться отрицательное число секунд или скажем 61 секунда.

    Поэтому нужны дополнительные корректировки типа:

    Код:
    if (sec >= 60) {
      min += sec/60;
      sec %= 60;
    }
    if (min >= 60) {
      hours += min/60;
      min %= 60;
    }
    С минутами аналогично.
     
Загрузка...

Поделиться этой страницей