Advertisement
Guest User

Untitled

a guest
Apr 6th, 2020
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.20 KB | None | 0 0
  1. using System;
  2.  
  3. namespace ConsoleApp6
  4. {
  5.     class Time
  6.     {
  7.         int hour; // часы
  8.         int min; // минуты
  9.         int sec; // секуды
  10.  
  11.         //конструктор без параметров
  12.         public Time()
  13.         {
  14.             hour = 0;
  15.             min = 0;
  16.             sec = 0;
  17.         }
  18.         //конструктор с параметрами
  19.         public Time(int h, int m, int s)
  20.         {
  21.             hour = h;
  22.             min = m;
  23.             sec = s;
  24.         }
  25.  
  26.         //деструктор
  27.         ~Time()
  28.         {
  29.             Console.WriteLine("Время " + this + "уничтожено");
  30.         }
  31.  
  32.         static void Main(string[] args)
  33.         {
  34.             Time d1 = new Time(5, 3, 4);
  35.             Time d2 = new Time(11, 50, 23);
  36.             Time d3 = new Time(12, 50, 23);
  37.             Time d4 = new Time(2, 20, 24);
  38.             Time d5 = new Time(23, 59, 59);
  39.             Time d6 = new Time(10, 50, 0);
  40.             Console.WriteLine((string)d1);
  41.             Time d;
  42.             d = d1 + 27;
  43.             Console.WriteLine("d1+27=" + d);
  44.             d = d2 + 185;
  45.             Console.WriteLine("d2+185=" + d);
  46.             d = d3 - d4;
  47.             Console.WriteLine("d3-d4=" + d);
  48.             d = d4 - d3;
  49.             Console.WriteLine("d4-d3=" + d);
  50.             d = d5 -d6;
  51.             Console.WriteLine("d5-d6=" + d);
  52.             d = d6 - d5;
  53.             Console.WriteLine("d6-d5=" + d);
  54.  
  55.         }
  56.         // операция получения строкового представления времени
  57.         public static implicit operator string(Time ob)
  58.         {
  59.             string res = "";
  60.             // если час пишется 1 цифрой, а не 2
  61.             if (ob.hour / 10 == 0)
  62.                 res = res + "0" + ob.hour + ":";
  63.             else
  64.                 res = res + ob.hour + ":";
  65.             // если минуты пишутся 1 цифрой, а не 2
  66.             if (ob.min / 10 == 0)
  67.                 res = res + "0" + ob.min + ":";
  68.             else res = res + ob.min + ":";
  69.             // если секунды пишутся 1 цифрой, а не 2
  70.             if (ob.sec / 10 == 0)
  71.                 res = res + "0" + ob.sec;
  72.             else res = res + ob.sec;
  73.             return res;
  74.         }
  75.         // Из строки в Time
  76.         public static implicit operator Time(string s)
  77.         {
  78.             Time res = new Time
  79.             {
  80.                 hour = int.Parse(s.Split(':')[0]),
  81.                 min = int.Parse(s.Split(':')[1]),
  82.                 sec = int.Parse(s.Split(':')[2])
  83.             };
  84.             return res;
  85.         }
  86.         // Сложение время + минуты и наоборот
  87.         public static Time operator +(Time ob1, int a)
  88.         {
  89.             int b, dophour = 0;
  90.             b = ob1.min + a;
  91.             while (b / 60 != 0)
  92.             {
  93.                 dophour++;
  94.                 b = b - 60;
  95.             }
  96.             Time ob2 = new Time();
  97.             ob2.hour = ob1.hour + dophour;
  98.             ob2.min = b;
  99.             ob2.sec = ob1.sec;
  100.             return ob2;
  101.         }
  102.         public static Time operator +(int a, Time ob1)
  103.         {
  104.             int b, dophour = 0;
  105.             b = ob1.min + a;
  106.             while (b / 60 != 0)
  107.             {
  108.                 dophour++;
  109.                 b = b - 60;
  110.             }
  111.             Time ob2 = new Time();
  112.             ob2.hour = ob1.hour + dophour;
  113.             ob2.min = b;
  114.             ob2.sec = ob1.sec;
  115.             return ob2;
  116.         }
  117.         //операция вычитания двух моментов времени
  118.         public static Time operator -(Time ob1, Time ob2)
  119.         {
  120.             Time ob3 = new Time();
  121.  
  122.             if(ob1.hour > ob2.hour)
  123.             {
  124.                 ob3.hour =  ob1.hour - ob2.hour;
  125.             }
  126.             if (ob1.hour < ob2.hour)
  127.             {
  128.                 ob3.hour = ob2.hour - ob1.hour;
  129.                 ob3.hour = 24 - ob3.hour;
  130.             }
  131.  
  132.             if(ob1.min > ob2.min)
  133.             {
  134.                 ob3.min = ob1.min - ob2.min;
  135.             }
  136.             if (ob1.min < ob2.min)
  137.             {
  138.                 int b = ob2.min - ob1.min;
  139.                 ob3.min = 60 - b;
  140.                 ob3.hour = ob3.hour - 1;
  141.                 if (ob3.hour<0)
  142.                 {
  143.                     ob3.hour = -ob3.hour;
  144.                     ob3.hour = 24 - ob3.min;
  145.                 }
  146.             }
  147.  
  148.             if (ob1.sec > ob2.sec)
  149.             {
  150.                 ob3.sec = ob1.sec - ob2.sec;
  151.             }
  152.             if (ob1.sec < ob2.sec)
  153.             {
  154.                 int a = ob2.sec - ob1.sec;
  155.                 ob3.sec = 60 - a;
  156.                 ob3.min = ob3.min - 1;
  157.                 if (ob3.min<0)
  158.                 {
  159.                     ob3.min = -ob3.min;
  160.                     ob3.min = 60 - ob3.min;
  161.                     ob3.hour = ob3.hour - 1;
  162.                     if (ob3.hour<0)
  163.                     {
  164.                         ob3.hour = -ob3.hour;
  165.                         ob3.hour = 24 - ob3.min;
  166.                     }
  167.                 }
  168.             }
  169.             return ob3;
  170.         }
  171.     }
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement