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!