Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- public class Program
- {
- public static void Main()
- {
- string[] napis = null;
- Czas24h t = null;
- // wczytanie i parsowanie napisu oznaczającego godzinę, np. 2:15:27
- napis = Console.ReadLine().Split(':');
- int[] czas = Array.ConvertAll(napis, int.Parse);
- try
- {
- t = new Czas24h(czas[0], czas[1], czas[2]);
- }
- catch (ArgumentException)
- {
- Console.WriteLine("error");
- return;
- }
- // wczytanie liczby poleceń
- int liczbaPolecen = int.Parse(Console.ReadLine());
- for (int i = 1; i <= liczbaPolecen; i++)
- {
- // wczytanie polecenia
- napis = Console.ReadLine().Split(' ');
- string typPolecenia = napis[0];
- int liczba = int.Parse(napis[1]);
- // wykonanie polecenia na obiekcie t typu Czas24h
- try
- {
- switch (typPolecenia)
- {
- case "g":
- if (liczba < 0 || liczba > 23)
- throw new ArgumentException(String.Format("{0} Nieprawidlowy format godzin: ", liczba), "! Wymagany przedzial: <0, 23>");
- t.Godzina = liczba;
- break;
- case "m":
- if (liczba < 0 || liczba > 59)
- throw new ArgumentException(String.Format("{0} Nieprawidlowy format godzin: ", liczba), "! Wymagany przedzial: <0, 23>");
- t.Minuta = liczba;
- break;
- case "s":
- if (liczba < 0 || liczba > 59)
- throw new ArgumentException(String.Format("{0} Nieprawidlowy format godzin: ", liczba), "! Wymagany przedzial: <0, 23>");
- t.Sekunda = liczba;
- break;
- }
- }
- catch (ArgumentException)
- {
- Console.WriteLine("error");
- return;
- }
- }
- Console.WriteLine(t);
- }
- }
- public class Czas24h
- {
- private int liczbaSekund;
- public int Sekunda
- {
- get => liczbaSekund - Godzina * 60 * 60 - Minuta * 60;
- // uzupełnij kod - zdefiniuj setters'a
- set => liczbaSekund = (Godzina*60*60) + (Minuta*60) + value;
- }
- public int Minuta
- {
- get => (liczbaSekund / 60) % 60;
- // uzupełnij kod - zdefiniuj setters'a
- set => liczbaSekund = (Godzina * 60 * 60) + (value * 60) + Sekunda;
- }
- public int Godzina
- {
- get => liczbaSekund / 3600;
- // uzupełnij kod - zdefiniuj setters'a
- set => liczbaSekund = (value * 60 * 60) + (Minuta * 60) + Sekunda;
- }
- public Czas24h(int godzina, int minuta, int sekunda)
- {
- // uzupełnij kod zgłaszając wyjątek ArgumentException
- // w sytuacji niepoprawnych danych
- if (godzina < 0 || godzina > 23)
- throw new ArgumentException(String.Format("{0} Nieprawidlowy format godzin: ", godzina), "! Wymagany przedzial: <0, 23>");
- if (minuta < 0 || minuta > 59)
- throw new ArgumentException(String.Format("{0} Nieprawidlowy format minut: ", minuta), "! Wymagany przedzial: <0, 59>");
- if (sekunda < 0 || sekunda > 59)
- throw new ArgumentException(String.Format("{0} Nieprawidlowy format sekund: ", sekunda), "! Wymagany przedzial: <0, 59>");
- liczbaSekund = sekunda + 60 * minuta + 3600 * godzina;
- }
- public override string ToString() => $"{Godzina}:{Minuta:D2}:{Sekunda:D2}";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement