Egzamin ze Wst_{}epu do Informatyki, 5 września 2000

Zadanie 1 W programie głównym zadeklarowana jest stała N oraz typ:

type tab: array[1..N] of char;

Napisać w pascalu procedur_{}e: procedure shift(var A: tab; m: integer) realizuj _{}ac _{}a przesuni_{}ecie cykliczne elementów tablicy A o m pozycji w lewo. Np. dla A={abcde} wynik działania shift(A,2) powinien być {cdeab}.

Zadanie 2 W_{}ezeł drzewa binarnego zdefiniowany jest deklaracj _{}a

 type
   wsk=^elem;
   elem =record
          klucz: integer;
          ldow,pdow: wsk
         end;

Napisać w pascalu funkcj_{}e: function lw(t:wsk):integer, której wartości _{}a jest liczba w_{}ezłów drzewa binarnego o korzeniu wskazywanym przez zmienn _{}a wskaźnikow _{}a t, w których pole klucz ma t_{}e sam _{}a wartość co pole klucz korzenia.

Zadanie 3 Lista jednokierunkowa zbudowana jest z elementów zadeklarownych jako:

 type
   wsk=^elem;
   elem = record
            id: integer;
            nast: wsk
         end;

Lista l zawiera w polu id liczby całkowite. Napisać w pascalu procedur_{}e procedure rozdziel(var l,lu,ld:wsk), która z listy l usunie elementy zawieraj _{}ace w polu id liczby ujemne i utworzy z nich list_{}e lu oraz elementy zawieraj _{}ace w polu id liczby dodatnie, z których utworzy list_{}e ld. Ewentualne zera zostan _{}a na liście l.