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

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

  1. shilovec5377

    shilovec5377 Member

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

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Ну сейчас я так понимаю корректировка вообще не выполняется.

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

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

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

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