// Example of a class that contains constructor functions.

#include <iostream.h>
#include <iomanip.h>

class Time
{
private:
   int hours;
   int minutes;

public:
   Time()
   {
      hours = -1;
      minutes = -1;
   }

   Time( int hrs, int mins )
   {
      Set(hrs, mins);
   }

   void Set( int hrs, int mins )
   {
      if (hrs  >= 0 && hrs  < 24 &&
	       mins >= 0 && mins < 60)
      {
         hours = hrs;
	      minutes = mins;
      }
      else
      {
	      hours = -1;
	      minutes = -1;
         cout << "\nTime is invalid" << endl;
      }
   }

   bool Valid()
   {
      return hours != -1;
   }

   void Add( int hrs, int mins )
   {
      if (!Valid())
         cout << "\nTime is invalid - add ignored" << endl;
      else if (hrs < 0 || mins < 0)
	      cout << "\nTime increment is invalid - add ignored" << endl;
      else
      {
         minutes = minutes + mins;
         if (minutes >= 60)
         {
            minutes = minutes - 60;
            hours++;
         }
         hours = hours + hrs;
         if (hours >= 24)
            hours = hours - 24;
      }
   }

   void PrintMilitary()
   {
      if (!Valid())
         cout << "\nTime is invalid" << endl;
      else
      {
         cout << setfill('0');
         cout << setw(2) << hours;
         cout << setw(2) << minutes;
         cout << setfill(' ');
      }
   }
};

int main()
{
   Time time1, time2(1,30), time3(24,0);

// Print the times
   time1.PrintMilitary();
   time2.PrintMilitary();
   time3.PrintMilitary();


// Signal normal termination
   return 0;
}
