Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2013, 12:54   #1
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию класс время

Создайте класс Время, в котором реализованы операции сложения, вычитания, сравнения, ввода и вывод на экран. Возможность конвертации времени из американского формата am (pm): 10:00 pm = 22:00, 12:00 pm =00:00
Код:
#include <iostream>
#include <string>
using namespace std;
class myTaim
{
public:
myTaim(){???????????:confused:};
~myTaim(){???????????:confused:};

};

int _tmain(int argc, _TCHAR* argv[])
{
???????????????	:confused:
}
подскажите на словах что и как писать. плиз

Последний раз редактировалось mixon-21; 21.08.2013 в 14:08.
mixon-21 вне форума Ответить с цитированием
Старый 21.08.2013, 17:18   #2
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Помогу с выводом на экран.

Код:
    MyTime t(22, 40, 05);
    std::cout << t << std::endl;
Output:
Цитата:
22:40:05
Код:
class MyTime {
public:

    MyTime(int h, int m, int s) : m_hour(h), m_min(m), m_sec(s) {
    };
    
    void setTime(int h, int m, int s) {
        m_hour = h;
        m_min = m;
        m_sec = s;
    }

    int getHour() const {
        return m_hour;
    }

    int getMin() const {
        return m_min;
    }

    int getSec() const {
        return m_sec;
    }
private:
    int m_hour;
    int m_min;
    int m_sec;
};

#include <iostream>

std::ostream& operator<<(std::ostream& stream, const MyTime& time) {
    stream.fill('0');
    stream.width(2);
    stream << time.getHour() << ":";
    stream.fill('0');
    stream.width(2);
    stream << time.getMin() << ":";
    stream.fill('0');
    stream.width(2);
    stream << time.getSec();
}

int main(int argc, char** argv) {
    MyTime t(22, 40, 05);
    std::cout << t << std::endl;
    return 0;
}
8Observer8 вне форума Ответить с цитированием
Старый 21.08.2013, 17:40   #3
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

Код:
#include "stdio.h"
#include "time.h"

typedef unsigned short HT;
typedef unsigned short MT;
typedef unsigned short ST;


class TTime
{
public:
  TTime();
  TTime(const HT h, const MT m, const ST s)
  {
	if(h > 24 || m > 60 || s > 60)
	{
      _time = _h = _m = _s = 0;
	  return;
	}
	_h = h;
	_m = m;
	_s = s;
	_time = _h*3600 + _m*60 + _s;
  }
  TTime(const TTime&);
  TTime& operator=(const TTime&);
  TTime& operator+(const TTime&);
  TTime& operator-(const TTime&);
  bool operator ==(const TTime& t)
  {
	  return _time == t._time;
  }
  bool operator < (const TTime& t)
  {
	  return _time < t._time;
  }
  bool operator > (const TTime& t)
  {
	  return _time > t._time;
  }
  bool operator <=(const TTime& t)
  {
      return _time <= t._time;
  }
  bool operator >=(const TTime& t)
  {
	  return _time >= t._time;
  }
  /*%2d:%2d:%2d*/
  void print(const char* frmt)
  {
     printf(frmt,_h,_m,_s);
  }
  void printAMPM()
  {
	  static const char PM[] = "PM";
	  static const char AM[] = "AM";
	  printf("%2d:%2d:%2d %s\n",_h%12 ? _h%12 : _h,_m,_s,_h%12 ? PM : AM);
  }
private:
  unsigned long _time;
  HT _h;
  MT _m;
  ST _s;
};

TTime::TTime()
{
  time_t cur_time = time(NULL);
  tm* now = localtime(&cur_time);
  _h = now->tm_hour;
  _m = now->tm_min;
  _s = now->tm_sec;
  _time = _s + _m*60 + _h*3600;
}

TTime& TTime::operator=(const TTime& t)
{
  _time = t._time;
  _h = t._h;
  _m = t._m;
  _s = t._s;
  return *this;
}

TTime::TTime(const TTime& t)
{
    operator=(t);
}

TTime& TTime::operator+(const TTime& t)
{
	_time += t._time;
	if(_time > 24*3600)
	   _time %= 24*3600;
	_s = _time%60;
    _time -= _s; 
	_h = _time/3600;
	_m = (_time - _h*3600)/60;
	return *this;
}

TTime& TTime::operator-(const TTime& t)
{
  _time += t._time;
  if(_time <= 0)
	_h = _m = _s = 0;
  _s = _time%60;
  _time -= _s;
  _h = _time/3600;
  _m = (_time - _h*3600)/60;
  return *this; 
}

int main()
{
  TTime t = TTime();
  TTime t2(22,59,59);
  t = t + t2;
  t.print("%2d:%2d:%2d\n");
  t.print("%2d.%2d.%2d\n");
  t.printAMPM();
  return 0;
}
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cоздать класс жидкость. определить конструкторы деструкторы и функцию печати. создать публик производный класс. (С++) Динар Габбасов Помощь студентам 0 28.05.2012 18:44
Добавить класс в проект2,похожий на класс из проекта1!оба проекта есть! xeops C# (си шарп) 0 15.05.2012 20:31
Класс запускает поток, который заполняет этот класс. Обмен класс <=> поток. Человек_Борща Общие вопросы Delphi 8 27.02.2012 23:24
Описать класс-родитель и класс-потомок. Delphi 7 Andrew_M Помощь студентам 0 15.01.2011 14:42
C++ и класс map - много warnings и ошибка во время выполнения KingOfNothing Помощь студентам 0 25.03.2010 23:13