1. Lista wydatków - Utwórz projekt konsolowy "ListaWydatków" i w nim klasę "Wydatek" z prywatnymi polami: opis, kwota, kategoria, data oraz konstruktorem. - Dodaj właściwości tylko do odczytu pozwalające na odczytanie tych pól oraz metodę wypisującą pojedynczy wydatek w czytelnej postaci na ekranie. - Dodaj metodę pozwalającą na zapis kolekcji wydatków do pliku tekstowego (argument IEnumerable) oraz metodę do wczytywania wydatków z pliku; przy błędnym formacie danych zgłaszaj wyjątek z komunikatem. - W Main przygotuj menu tekstowe: "Dodaj wydatek", "Pokaż wszystkie wydatki", "Zapisz", "Wczytaj" i "Koniec". - Użyj LINQ do policzenia sumy wszystkich wydatków, średniej kwoty oraz wypisania wydatków z wybranej kategorii. - Zaimplementuj w klasie Wydatek interfejs IComparable<> i do menu dodaj polecenia pozwalające na sortowanie wydatków alfabetycznie lub po kwocie (rosnąco i malejąco). 2. Lista zadań - Utwórz projekt konsolowy "ListaZadan" i w nim klasę "Zadanie" z prywatnymi polami: tytul (string), opis (string), priorytet (int, np. 1–5), termin (DateTime), czyUkonczone (bool). - Dodaj konstruktor ustawiający wszystkie pola (poza czyUkonczone, które domyślnie ma być false). - Dodaj właściwości tylko do odczytu pozwalające na odczytanie tych pól (z wyjątkiem CzyUkonczone, które może mieć też set) oraz metodę wypisującą pojedyncze zadanie w czytelnej postaci (np. „[X] Tytuł (priorytet 3, do: 2026‑04‑25) – Opis”). - Dodaj metody statyczne w klasie Zadanie: ZapiszDoPliku(string sciezka, IEnumerable zadania) – zapisuje kolekcję zadań do pliku tekstowego (np. CSV: tytul;opis;priorytet;termin;czyUkonczone), WczytajZPliku(string sciezka) – zwraca List wczytaną z pliku. Przy błędnym formacie danych zgłaszaj wyjątek z czytelnym komunikatem. - W Main przygotuj menu tekstowe: „Dodaj zadanie”, „Pokaż wszystkie zadania”, „Oznacz zadanie jako ukończone”, „Zapisz do pliku”, „Wczytaj z pliku”, „Statystyki”, „Koniec”. - Użyj LINQ do policzenia: liczby zadań wszystkich, liczby zadań ukończonych i nieukończonych, średniego priorytetu zadań nieukończonych, wypisania zadań z terminem wcześniejszym niż podana data, posortowanych po terminie. - Zaimplementuj w klasie Zadanie interfejs IComparable tak, aby domyślnie sortowało: najpierw po terminie (najbliższy pierwszy), przy tym samym terminie – po priorytecie malejąco (wyższy priorytet wcześniej). Do menu dodaj polecenia pozwalające na sortowanie zadań wg: terminu, priorytetu, tytułu (rosnąco i malejąco; możesz użyć OrderBy/OrderByDescending albo dodatkowych komparatorów).