25.03.2003
                         Egzamin ZSI.TP.2002/2003
Zad 1 (p. 12)
Należy napisać procedurę:
      procedure Kopia(NazwaDanych, NazwaWyniku: String; n: integer);
która  skopiuje plik tekstowy o nazwie podanej jako pierwszy  parametr  na
plik tekstowy o nazwie podanej jako drugi parametr zastępując ciągi spacji
tabulacjami.  Zakładamy,  że pozycje tabulatorów  występują  co  n  znaków
(pierwszy  w  n-tej kolumnie, drugi w 2*n-tej itp.). Program  ma  zastąpić
znakiem  tabulacji  każdy ciąg spacji kończący się na pozycji  tabulatora.
Np.  dla n= 8 wiersz (# oznacza spacje, @ tabulacje, zaś wiersz z liczbami
pełni jedynie role pomocniczą):
   12345678901234567890123456789012345678901234567890
   ##Ala####ma##kota#zaś###Ola#############psa.
należy przekształcić w:
   12345678901234567890123456789012345678901234567890
   ##Ala@#ma##kota#zaś@Ola@@psa.
Zakładamy, że:
  ·   plik z danymi istnieje i jest plikiem tekstowym,
·   plik z wynikami nie istnieje (ale nazwa jest poprawna),
·   plik z danymi nie zawiera tabulacji.
Zad 2 (p. 12)
Dane są następujące deklaracje:
const M = ...;
type   TLista = ^TElem;
          TElem = record
                           dane: integer;
                           nast, rowne: TLista
                         end;
Napisz procedurę, która przekształci podaną jako argument listę l zgodnie
z następującymi zasadami:
  ·   usunie z listy elementy mniejsze niż jeden i większe niż M,
·   pole rowne w każdym elemencie listy, początkowo niezainicjowane,
ustawi tak, aby wskazywało na następny element listy o tej samej wartości
pola dane,
  ·   utworzy tablicę t taką, że dla każdego 1 <= i <= M,  t[i] pokazuje na
     pierwszy element listy l o wartości i; tablica t powinna być drugim
     parametrem procedury.
Zad 3 (p. 16)
Dane jest drzewo binarne typu TDrzewaBin. Napisz funkcję:
   function ZnajdźŚrodkowe(d: TDrzewaBin): TListy;
która  da jako wynik nowoutworzoną listę środkowych węzłów drzewa d  9tzn.
lista  ma  zawierać  wskaźniki  do węzłów drzewa).  Przez  węzeł  środkowy
rozumiemy  taki  węzeł w, dla którego suma wartości jego  przodków  (czyli
suma  wartości kluczy węzłów drzewa na ścieżce od korzenia do w) jest taka
sama, jak suma wartości jego potomków (czyli suma kluczy w obu poddrzewach
węzła w). Np. dla:

          
środkowymi węzłami są 6 (0 powyżej 0 poniżej) i 5 (7 powyżej 7 poniżej).
Typy TDrzewaBin i TListy takie jak na wykładzie.

Powodzenia!