18.02.2003 ZSI.TP.Klasówka Zad 1 (8 p.) Dany jest typ: TElt = record dane: TDane; nast: integer; end; Napisz procedurę procedure kopia(nazwa_we, nazwa_wy: String); która przepisze dane z pliku (o nazwie nazwa_we) rekordów TElt do pliku (o nazwie nazwa_wy) elementów typu TDane, zachowując kolejność wyznaczoną przez pola nast. Zakładamy, że pierwsza dana znajduje się w pierwszym rekordzie pliku z danymi (o ile ten plik jest niepusty), zaś pole nast informuje, w którym elemencie pliku jest następna dana do przepisania. Jeśli już nie ma następnej danej, to pole nast ma wartość -1. Można założyć, że plik z danymi istnieje i jest poprawny, a plik z wynikami nie istnieje. Nie wnikamy w to, czy pola nast pozwolą skopiować wszystkie, czy tylko część, danych z pliku wejściowego. Zad 2 (12 p.) Dane są typy: TDane = ; { Jakiś typ z operacjami <, <=, >, >=. <>, = } TLista1 = ^TElt1; TLista2 = ^TElt2; TElt1 = record dane: TDane; nast: TLista1; end; TElt2 = record dane: TDane; ile: integer; nast: TLista2; end; Napisz funkcję function Połącz(l1, l2: TLista1): TLista2; która na podstawie dwu posortowanych niemalejąco (wzgl. pola dane) list l1 i l2 utworzy nową, posortowaną rosnąco (wzgl. pola dane) listę. Powtarzające się wartości z list l1 i l2 należy umieszczać w pojedynczych elementach nowotworzonej listy wraz z licznikiem ich wystąpień. Np. dla list: l1: 2->5->5->8, l2: 5->7->8, należy wygenerować listę (pierwsza liczba to dane, druga to ile): (2;1)->(5;3)->(7;1)->(8;2). Powodzenia!