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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2009, 16:52   #1
Luxian
Пользователь
 
Регистрация: 30.09.2009
Сообщений: 13
По умолчанию Нужна помощь в упрошении программы

Добрый день Имееться условие задания Объявите новый тип данных время. Перезагрузите следующие операторы:
• + с параметром;
• ++;
• * с параметром;
• > 2-х объектов.

и вот в принципе готовая программа.....единственное что она слишком громосткая и замудренная..........если кто-то знает как её упростить то подскажите.........

Код:
#include <iostream>

using namespace std;

typedef unsigned short int word;

class TTime
{
   private:
      struct TTimeFormat
      {
         word hour;
         word min;
         word sec;
      }  time;

   public:
      TTime();
      TTime(word, word, word);
      void Set(word, word, word);

      TTime operator + (const TTime &);
      TTime operator * (const TTime &);
      TTime operator ++ (int);
      bool operator > (const TTime &);
      friend ostream &operator << (ostream &, const TTime &);
};

ostream &operator << (ostream &, const TTime &);

//----------------------------------------------//
TTime::TTime()
{
   Set(0, 0, 0);
}
//----------------------------------------------//
TTime::TTime(word hour, word min, word sec)
{
   Set(hour, min, sec);
}
//----------------------------------------------//
void TTime::Set(word hour, word min, word sec)
{
   time.hour= hour;
   time.min= min;
   time.sec= sec;
}
//----------------------------------------------//
TTime TTime::operator + (const TTime &obj)
{
   TTime ret;
   ret.time.sec= time.sec + obj.time.sec;
   ret.time.min= time.min + obj.time.min;
   ret.time.hour= time.hour + obj.time.hour;
   if (ret.time.sec >= 60)
   {
      ret.time.sec-= 60;
      ret.time.min++;
   }
   if (ret.time.min >= 60)
   {
      ret.time.min-= 60;
      ret.time.hour++;
   }
   if (ret.time.hour >= 24)
      ret.time.hour-= 24;
   return ret;
}
//----------------------------------------------//
TTime TTime::operator * (const TTime &obj)
{
   // Заглушка
   TTime ret;
   return ret;
}
//----------------------------------------------//
TTime TTime::operator ++ (int)
{
   if (++time.sec == 60)
   {
      time.sec= 0;
      if (++time.min == 60)
      {
         time.min= 0;
         if (++time.hour == 24)
            time.hour= 0;
      }
   }
   return *this;
}
//----------------------------------------------//
bool TTime::operator > (const TTime &obj)
{
   if (time.hour != obj.time.hour)
   {
      return time.hour > obj.time.hour;
   }
   else
   {
      if (time.min != obj.time.min)
      {
         return time.min > obj.time.min;
      }
      else
      {
         return time.sec > obj.time.sec;
      }
   }
}
//----------------------------------------------//
ostream &operator << (ostream &theStream, const TTime &obj)
{
   return theStream << obj.time.hour << ":" << obj.time.min << ":" << obj.time.sec;
}
//----------------------------------------------//

int main (int argc, char **argv)
{
   TTime a(0, 0, 24), b(1, 12, 59), c(23, 59, 59);
   cout << "a = " << a << endl;
   cout << "b = " << b << endl;
   cout << "c = " << c << endl;
   cout << "a++ = " << a++ << endl;
   cout << "b++ = " << b++ << endl;
   cout << "c++ = " << c++ << endl;
   cout << "a > b = " << ((a > b) ? "true" : "false")  << endl;
   cout << "a > c = " << ((a > c) ? "true" : "false")  << endl;
   cout << "b > c = " << ((b > c) ? "true" : "false")  << endl;
   cout << "a + b = " << (a + b) << endl;
   cout << "a + c = " << (a + c) << endl;
   cout << "b + c = " << (b + c) << endl;
   return 0;
}

Последний раз редактировалось Stilet; 30.09.2009 в 17:06.
Luxian вне форума Ответить с цитированием
Старый 30.09.2009, 17:10   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Разве что типа:
Код:
bool TTime::operator > (const TTime &obj)
{
   if (time.hour != obj.time.hour)
   {
      return time.hour > obj.time.hour;
   }
   else
   {
     return=(time.min != obj.time.min)?(time.min > obj.time.min):(time.sec > obj.time.sec);
   }
}
Хотя зачем, прога вроде не такая уж и грузная...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очень нужна помощь с написанием программы... срочно(буду благодарен за помощь) 5Paladin5 Помощь студентам 3 02.07.2009 09:12
Нужна помощь в создании программы... Gangster Общие вопросы Delphi 16 24.05.2008 14:42
нужна помощь - 2 программы в С++ Nemisoi Фриланс 1 22.04.2008 23:10