Advertisement
kot025

lab 9 - Time.cs

Jun 12th, 2015
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.25 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApplication1
  8. {
  9.     class Time
  10.     {
  11.         int hours;
  12.         int minutes;
  13.         static int count = 0;
  14.         static public int GetCount() // для работы со статичесими полями используются только статические функции
  15.         {
  16.             return count;
  17.         }
  18.         public Time()
  19.         {
  20.             hours = 0;
  21.             minutes = 0;
  22.             count++;
  23.         }
  24.         public Time(int _hours)
  25.         {
  26.             Hours = _hours;
  27.             Minutes = 0;
  28.             count++;
  29.         }
  30.         public Time(int _hours, int _minutes)
  31.         {
  32.             Hours = _hours;
  33.             Minutes = _minutes;
  34.             count++;
  35.         }
  36.         public int Hours
  37.         {
  38.             get { return hours; }
  39.             set
  40.             {
  41.                 if (value < 0 || value > 23)
  42.                 {
  43.                     Console.WriteLine("Ошибка. Проверьте вводимые значения. Время было сброшено до 00:??");
  44.                     hours = 0;
  45.                     minutes = 0;
  46.                 }
  47.                 else
  48.                 {
  49.                     hours = value;
  50.                 }
  51.             }
  52.         }
  53.         public int Minutes
  54.         {
  55.             get { return minutes; }
  56.             set
  57.             {
  58.                 if (value < 0 || value > 60)
  59.                 {
  60.                     Console.WriteLine("Ошибка. Проверьте вводимые значения. Время было сброшено до ??:00");
  61.                     hours = 0;
  62.                     minutes = 0;
  63.                 }
  64.                 else
  65.                 {
  66.                     minutes = value;
  67.                 }
  68.             }
  69.         }
  70.         public void Show()
  71.         {
  72.             Console.WriteLine("{0:00}:{1:00}", hours, minutes);
  73.         }
  74.         public Time Minus(int mins)
  75.         {
  76.             Time res = new Time();
  77.             if (mins <= Minutes)
  78.             {
  79.                 res.Minutes = Minutes - mins;
  80.                 res.Hours = Hours;
  81.             }
  82.             else
  83.             {
  84.                 int fullHours = (mins - Minutes) / 60;          // если все минуты из этого часа выбросить, сколько часов назад потребуется отматывать
  85.                 if (fullHours < Hours)
  86.                 {
  87.                     res.Hours = Hours - (fullHours + 1);
  88.                     res.Minutes = 60 - mins % 60 + Minutes;
  89.                 }
  90.                 else
  91.                 {
  92.                     Console.WriteLine("Ошибка. Вычитание в пределах данных суток выполнить невозможно.");
  93.                     res.Hours = Hours;
  94.                     res.Minutes = Minutes;
  95.                 }
  96.             }
  97.             return res;
  98.         }
  99.         public static explicit operator int(Time time)
  100.         {
  101.             return time.Hours;
  102.         }               // явное преобразование
  103.         public static implicit operator bool(Time time)                 // неявное преобразование
  104.         {
  105.             return time.Hours != 0;
  106.         }              
  107.         public static Time operator --(Time time)
  108.         {
  109.             Time res = new Time();
  110.             if (time.Minutes > 0)
  111.             {
  112.                 res.Minutes = time.Minutes - 1;
  113.                 res.Hours = time.Hours;
  114.             }
  115.             else
  116.             {
  117.                 if (time.hours > 0)
  118.                 {
  119.                     res.Hours = time.Hours - 1;
  120.                     res.Minutes = 59;
  121.                 }
  122.                 else
  123.                 {
  124.                     Console.WriteLine("Ошибка. Вычитание в пределах данных суток выполнить невозможно.");
  125.                     res.Hours = 0;
  126.                     res.Minutes = 0;
  127.                 }
  128.             }
  129.             return res;
  130.         }                    // унарный минус
  131.         public static Time operator +(Time time, int k)
  132.         {
  133.             Time res = new Time();
  134.             int mins = time.Hours * 60 + time.Minutes;
  135.             if (mins + k < 24 * 60)
  136.             {
  137.                 mins += k;
  138.                 res.Hours = mins / 60;
  139.                 res.Minutes = mins % 60;
  140.             }
  141.             else
  142.             {
  143.                 Console.WriteLine("Ошибка. Сложение в пределах данных суток выполнить невозможно.");
  144.             }
  145.             return res;
  146.         }              // бинарный плюс Time + int
  147.         public static Time operator +(int k, Time time)
  148.         {
  149.             Time res = new Time();
  150.             int mins = time.Hours * 60 + time.Minutes;
  151.             if (mins + k < 24 * 60)
  152.             {
  153.                 mins += k;
  154.                 res.Hours = mins / 60;
  155.                 res.Minutes = mins % 60;
  156.             }
  157.             else
  158.             {
  159.                 Console.WriteLine("Ошибка. Сложение в пределах данных суток выполнить невозможно.");
  160.             }
  161.             return res;
  162.         }              // бинарный плюс int + Time
  163.         public static Time operator + (Time time1, Time time2)
  164.         {
  165.             Time res = new Time();
  166.             int mins1 = time1.Hours * 60 + time1.Minutes;
  167.             int mins2 = time2.Hours * 60 + time2.Minutes;
  168.             if (mins1 + mins2 < 24 * 60)
  169.             {
  170.                 mins1 += mins2;
  171.                 res.Hours = mins1 / 60;
  172.                 res.Minutes = mins1 % 60;
  173.             }
  174.             else
  175.             {
  176.                 Console.WriteLine("Ошибка. Сложение в пределах данных суток выполнить невозможно.");
  177.             }
  178.             return res;
  179.         }       // бинарный плюс Time + Time
  180.         public static bool operator >(Time time1, Time time2)
  181.         {
  182.             if (time1.Hours >= time2.Hours)
  183.             {
  184.                 return true;  
  185.             }
  186.             else if (time1.Hours == time2.Hours)
  187.             {
  188.                 if (time1.Minutes > time2.Minutes)
  189.                 {
  190.                     return true;
  191.                 }
  192.                 else
  193.                 {
  194.                     return false;
  195.                 }
  196.             }
  197.             else
  198.             {
  199.                 return false;
  200.             }
  201.         }
  202.         public static bool operator <(Time time1, Time time2)
  203.         {
  204.             if (time1.Hours >= time2.Hours)
  205.             {
  206.                 return true;
  207.             }
  208.             else if (time1.Hours == time2.Hours)
  209.             {
  210.                 if (time1.Minutes > time2.Minutes)
  211.                 {
  212.                     return true;
  213.                 }
  214.                 else
  215.                 {
  216.                     return false;
  217.                 }
  218.             }
  219.             else
  220.             {
  221.                 return false;
  222.             }
  223.         }  
  224.     }
  225.  
  226. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement