namespace CA3 { public class Time { private int second; public Time(int hour = 0, int minute = 0, int second = 0) { SetTime(hour, minute, second); } public Time(Time t) : this(t.Hour, t.Minute, t.Second) { } public void SetTime(int hour, int minute, int second) { Hour = hour; Minute = minute; Second = second; } public Time Next(int hour, int minute, int second) { Time newTime = new Time(this); newTime.second += hour * 3600 + minute * 60 + second; newTime.second %= 24 * 3600; return newTime; } public int Hour { get { return second / 3600; } set { if (value < 0 || value > 23) { throw new ArgumentOutOfRangeException(nameof(value), value, $"Hour must be 0 - 23"); } second += (value - Hour) * 3600; } } public int Minute { get { return (second % 3600) / 60; } set { if (value < 0 || value > 59) { throw new ArgumentOutOfRangeException(nameof(value), value, $"Minute must be 0 - 59"); } second += (value - Minute) * 60; } } public int Second { get { return second % 60; } set { if (value < 0 || value > 59) { throw new ArgumentOutOfRangeException(nameof(value), value, $"Second must be 0 - 59"); } second += value - Second; } } public string ToUniversalString() => $"{Hour:D2}:{Minute:D2}:{Second:D2}"; public override string ToString() => $"{((Hour == 0 || Hour == 12) ? 12 : Hour % 12)}:" + $"{Minute:D2}:{Second:D2} {(Hour < 12 ? "AM" : "PM")}"; } class Program { public static void Main() { var t1 = new Time(); var t2 = new Time(2); var t3 = new Time(21, 34); var t4 = new Time(12, 25, 42); var t5 = new Time(t4); t5.Hour = 15; var t6 = t5.Next(10, 40, 0); Console.WriteLine("t1:"); Console.WriteLine(t1.ToUniversalString()); Console.WriteLine(t1.ToString()); Console.WriteLine("t2:"); Console.WriteLine(t2.ToUniversalString()); Console.WriteLine(t2.ToString()); Console.WriteLine("t3:"); Console.WriteLine(t3.ToUniversalString()); Console.WriteLine(t3.ToString()); Console.WriteLine("t4:"); Console.WriteLine(t4.ToUniversalString()); Console.WriteLine(t4.ToString()); Console.WriteLine("t5:"); Console.WriteLine(t5.ToUniversalString()); Console.WriteLine(t5.ToString()); Console.WriteLine("t6:"); Console.WriteLine(t6.ToUniversalString()); Console.WriteLine(t6.ToString()); } } }