Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ConsoleApplication1
- {
- class Time
- {
- int hours;
- int minutes;
- static int count = 0;
- static public int GetCount() // для работы со статичесими полями используются только статические функции
- {
- return count;
- }
- public Time()
- {
- hours = 0;
- minutes = 0;
- count++;
- }
- public Time(int _hours)
- {
- Hours = _hours;
- Minutes = 0;
- count++;
- }
- public Time(int _hours, int _minutes)
- {
- Hours = _hours;
- Minutes = _minutes;
- count++;
- }
- public int Hours
- {
- get { return hours; }
- set
- {
- if (value < 0 || value > 23)
- {
- Console.WriteLine("Ошибка. Проверьте вводимые значения. Время было сброшено до 00:??");
- hours = 0;
- minutes = 0;
- }
- else
- {
- hours = value;
- }
- }
- }
- public int Minutes
- {
- get { return minutes; }
- set
- {
- if (value < 0 || value > 60)
- {
- Console.WriteLine("Ошибка. Проверьте вводимые значения. Время было сброшено до ??:00");
- hours = 0;
- minutes = 0;
- }
- else
- {
- minutes = value;
- }
- }
- }
- public void Show()
- {
- Console.WriteLine("{0:00}:{1:00}", hours, minutes);
- }
- public Time Minus(int mins)
- {
- Time res = new Time();
- if (mins <= Minutes)
- {
- res.Minutes = Minutes - mins;
- res.Hours = Hours;
- }
- else
- {
- int fullHours = (mins - Minutes) / 60; // если все минуты из этого часа выбросить, сколько часов назад потребуется отматывать
- if (fullHours < Hours)
- {
- res.Hours = Hours - (fullHours + 1);
- res.Minutes = 60 - mins % 60 + Minutes;
- }
- else
- {
- Console.WriteLine("Ошибка. Вычитание в пределах данных суток выполнить невозможно.");
- res.Hours = Hours;
- res.Minutes = Minutes;
- }
- }
- return res;
- }
- public static explicit operator int(Time time)
- {
- return time.Hours;
- } // явное преобразование
- public static implicit operator bool(Time time) // неявное преобразование
- {
- return time.Hours != 0;
- }
- public static Time operator --(Time time)
- {
- Time res = new Time();
- if (time.Minutes > 0)
- {
- res.Minutes = time.Minutes - 1;
- res.Hours = time.Hours;
- }
- else
- {
- if (time.hours > 0)
- {
- res.Hours = time.Hours - 1;
- res.Minutes = 59;
- }
- else
- {
- Console.WriteLine("Ошибка. Вычитание в пределах данных суток выполнить невозможно.");
- res.Hours = 0;
- res.Minutes = 0;
- }
- }
- return res;
- } // унарный минус
- public static Time operator +(Time time, int k)
- {
- Time res = new Time();
- int mins = time.Hours * 60 + time.Minutes;
- if (mins + k < 24 * 60)
- {
- mins += k;
- res.Hours = mins / 60;
- res.Minutes = mins % 60;
- }
- else
- {
- Console.WriteLine("Ошибка. Сложение в пределах данных суток выполнить невозможно.");
- }
- return res;
- } // бинарный плюс Time + int
- public static Time operator +(int k, Time time)
- {
- Time res = new Time();
- int mins = time.Hours * 60 + time.Minutes;
- if (mins + k < 24 * 60)
- {
- mins += k;
- res.Hours = mins / 60;
- res.Minutes = mins % 60;
- }
- else
- {
- Console.WriteLine("Ошибка. Сложение в пределах данных суток выполнить невозможно.");
- }
- return res;
- } // бинарный плюс int + Time
- public static Time operator + (Time time1, Time time2)
- {
- Time res = new Time();
- int mins1 = time1.Hours * 60 + time1.Minutes;
- int mins2 = time2.Hours * 60 + time2.Minutes;
- if (mins1 + mins2 < 24 * 60)
- {
- mins1 += mins2;
- res.Hours = mins1 / 60;
- res.Minutes = mins1 % 60;
- }
- else
- {
- Console.WriteLine("Ошибка. Сложение в пределах данных суток выполнить невозможно.");
- }
- return res;
- } // бинарный плюс Time + Time
- public static bool operator >(Time time1, Time time2)
- {
- if (time1.Hours >= time2.Hours)
- {
- return true;
- }
- else if (time1.Hours == time2.Hours)
- {
- if (time1.Minutes > time2.Minutes)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- else
- {
- return false;
- }
- }
- public static bool operator <(Time time1, Time time2)
- {
- if (time1.Hours >= time2.Hours)
- {
- return true;
- }
- else if (time1.Hours == time2.Hours)
- {
- if (time1.Minutes > time2.Minutes)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- else
- {
- return false;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement