26.06.2003 ZSI.TP.2002/2003 Egzamin poprawkowy Zad 1 (p. 12) Dany jest plik binarny liczb całkowitych (file of integer). Liczby są w nim zgrupowane w bloki, z których każdy poprzedzony jest długością. Napisz procedurę Popraw(NazwaDanych, NazwaWyniku: String), która na podstawie takiego pliku utworzy nowy, zawierający te same dane, ale bez zer wewnątrz bloków i bez pustych bloków. Można założyć, że plik NazwaDanych istnieje, zaś plik NazwaWyniku nie. Przykład (dla ułatwienia bloki oddzielono przecinkami): dane: 3 10 0 20 , 0 , 1 0 , 2 30 0 , 1 40 wynik: 2 10 20 , 1 30 , 1 40 Zad 2 (p. 12) Dane są typy: type Lista = ^Elem; Elem = record w : integer; nast : Lista; end; Napisz procedurę Srednie(l: Lista), która zamieni wartości wszystkich elementów listy l na średnie arytmetyczne początkowych wartości dwu sąsiednich elementów (jeśli nie ma któregoś z sąsiadów, to traktujemy go jak sąsiada z wartością 0). Zad 3 (p. 16) Dane są dwa drzewa binarne typu TDrzewaBin. Napisz funkcję: function Dodaj(d1, d2: TDrzewaBin): TDrzewaBin; która da jako wynik nowoutworzone (tj. wszystkie jego węzły należy stworzyć podczas dodawania) drzewo, będące sumą drzew d1 i d2. To nowe drzewo ma węzeł tam i tylko tam, gdzie co najmniej jedno z drzew d1, d2 miało węzeł, zaś wartość w tym węźle jest sumą wartości odpowiadających węzłów z d1 i d2 (jeśli jedno z tych drzew nie ma odpowiadającego węzła, to bierzemy tylko wartość z węzła drugiego drzewa). Np. dla: Typ TDrzewaBin jest taki jak na wykładzie. Powodzenia!