Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace ConsoleApp6
- {
- class Time
- {
- int hour; // часы
- int min; // минуты
- int sec; // секуды
- //конструктор без параметров
- public Time()
- {
- hour = 0;
- min = 0;
- sec = 0;
- }
- //конструктор с параметрами
- public Time(int h, int m, int s)
- {
- hour = h;
- min = m;
- sec = s;
- }
- //деструктор
- ~Time()
- {
- Console.WriteLine("Время " + this + "уничтожено");
- }
- static void Main(string[] args)
- {
- Time d1 = new Time(5, 3, 4);
- Time d2 = new Time(11, 50, 23);
- Time d3 = new Time(12, 50, 23);
- Time d4 = new Time(2, 20, 24);
- Time d5 = new Time(23, 59, 59);
- Time d6 = new Time(10, 50, 0);
- Console.WriteLine((string)d1);
- Time d;
- d = d1 + 27;
- Console.WriteLine("d1+27=" + d);
- d = d2 + 185;
- Console.WriteLine("d2+185=" + d);
- d = d3 - d4;
- Console.WriteLine("d3-d4=" + d);
- d = d4 - d3;
- Console.WriteLine("d4-d3=" + d);
- d = d5 -d6;
- Console.WriteLine("d5-d6=" + d);
- d = d6 - d5;
- Console.WriteLine("d6-d5=" + d);
- }
- // операция получения строкового представления времени
- public static implicit operator string(Time ob)
- {
- string res = "";
- // если час пишется 1 цифрой, а не 2
- if (ob.hour / 10 == 0)
- res = res + "0" + ob.hour + ":";
- else
- res = res + ob.hour + ":";
- // если минуты пишутся 1 цифрой, а не 2
- if (ob.min / 10 == 0)
- res = res + "0" + ob.min + ":";
- else res = res + ob.min + ":";
- // если секунды пишутся 1 цифрой, а не 2
- if (ob.sec / 10 == 0)
- res = res + "0" + ob.sec;
- else res = res + ob.sec;
- return res;
- }
- // Из строки в Time
- public static implicit operator Time(string s)
- {
- Time res = new Time
- {
- hour = int.Parse(s.Split(':')[0]),
- min = int.Parse(s.Split(':')[1]),
- sec = int.Parse(s.Split(':')[2])
- };
- return res;
- }
- // Сложение время + минуты и наоборот
- public static Time operator +(Time ob1, int a)
- {
- int b, dophour = 0;
- b = ob1.min + a;
- while (b / 60 != 0)
- {
- dophour++;
- b = b - 60;
- }
- Time ob2 = new Time();
- ob2.hour = ob1.hour + dophour;
- ob2.min = b;
- ob2.sec = ob1.sec;
- return ob2;
- }
- public static Time operator +(int a, Time ob1)
- {
- int b, dophour = 0;
- b = ob1.min + a;
- while (b / 60 != 0)
- {
- dophour++;
- b = b - 60;
- }
- Time ob2 = new Time();
- ob2.hour = ob1.hour + dophour;
- ob2.min = b;
- ob2.sec = ob1.sec;
- return ob2;
- }
- //операция вычитания двух моментов времени
- public static Time operator -(Time ob1, Time ob2)
- {
- Time ob3 = new Time();
- if(ob1.hour > ob2.hour)
- {
- ob3.hour = ob1.hour - ob2.hour;
- }
- if (ob1.hour < ob2.hour)
- {
- ob3.hour = ob2.hour - ob1.hour;
- ob3.hour = 24 - ob3.hour;
- }
- if(ob1.min > ob2.min)
- {
- ob3.min = ob1.min - ob2.min;
- }
- if (ob1.min < ob2.min)
- {
- int b = ob2.min - ob1.min;
- ob3.min = 60 - b;
- ob3.hour = ob3.hour - 1;
- if (ob3.hour<0)
- {
- ob3.hour = -ob3.hour;
- ob3.hour = 24 - ob3.min;
- }
- }
- if (ob1.sec > ob2.sec)
- {
- ob3.sec = ob1.sec - ob2.sec;
- }
- if (ob1.sec < ob2.sec)
- {
- int a = ob2.sec - ob1.sec;
- ob3.sec = 60 - a;
- ob3.min = ob3.min - 1;
- if (ob3.min<0)
- {
- ob3.min = -ob3.min;
- ob3.min = 60 - ob3.min;
- ob3.hour = ob3.hour - 1;
- if (ob3.hour<0)
- {
- ob3.hour = -ob3.hour;
- ob3.hour = 24 - ob3.min;
- }
- }
- }
- return ob3;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement