Trzecie zadanie punktowane, termin oddania 16.05.2003. Cz©sto si© zdarza, æe przechowujemy zestaw wzajemnie si© do siebie odwoàuj•cych plik¢w. Gdy takich plik¢w jest wiele i niekoniecznie wszystkie znajduj• si© w jednym katalogu powstaje problem zlokalizowania takich grup plik¢w. Napisz program mapa, kt¢ry sàuæy do rozwi•zania powyæszego problemu. Wywoàanie programu powinno mieÜ postaÜ: mapa <katalog> <rozszerzenie> <ogranicznik> <plik wynikowy> np. mapa c:\strony\ htm " wynik.out gdzie: <katalog> jest katalogiem startowym wyszukiwania <rozszerzenie> okreòla jakie pliki chcemy przegl•daÜ <ogranicznik> jest pojedynczym znakiem, kt¢ry wyznacza pocz•tek i koniec odnoònika w przegl•danych plikach. Odnoònik ma postaÜ: <ogranicznik><plik><ogranicznik> gdzie <plik> jest nazw• (byÜ moæe ze òcieæk•) pliku. <plik wynikowy> nazwa (byÜ moæe ze òcieæk•) pliku, kt¢ry ma zawieraÜ wygenerowan• map©. Wynikiem programu ma byÜ wypisanie do pliku wynikowego mapy powi•za‰ plik¢w w postaci: <plik1>: <plik1_1> <plik1_2> ... <plik1_n1> <plik2>: <plik2_1> <plik2_2> ... <plik2_n2> ... <plikm>: <plikm_1> <plikm_2> ... <plikm_nm> gdzie <plik_indeks> oznacza peàna òcieæk© do pliku. Nazwy przed dwukropkiem s• nazwami plik¢w do kt¢rych wyst©puj• odnoòniki w plikach podanych w kolejnych wierszach. Do przechowywania informacji o wyst•pieniach plik¢w uæyj drzewa BST z kluczami b©d•cymi peànymi (tj. wraz ze òcieækami) nazwami plik¢w z odnoònik¢w, zaò wartoòciami b©d•cymi posortowanymi (wzgl. peànych nazw) listami nazw plik¢w zawieraj•cych odnoòniki. Zwr¢Ü uwag© na wàaòciw• organizacj© programu (procedury i moduày). Tw¢j program powinien zawieraÜ co najmniej moduày: BST, Lista, Pliki. Zadbaj o moæliwie proste interfejsy moduà¢w. Uwagi: - program ma na pocz•tku sprawdziÜ poprawnoòÜ parametr¢w (tzn. czy jest ich 4, czy rozszerzenie nie ma wi©cej niæ 3 znaki, czy ogranicznik ma jeden znak, czy plik wynikowy nie istnieje); jeòli parametry sa niepoprawne, to naleæy wypisaÜ stosowny komunikat i zako‰czyÜ prac©, - oczywiòcie jeòli w jakimò pliku wyst©puje kilka razy odnoònik do tego samego pliku, to w mapie informacja o powi•zaniu pojawia si© tylko raz, - uwaga na wzgl©dne scieæki (tj. z .. lub .) w odnoònikach: a) trzeba je wàaòciwie wyliczaÜ (tj. wzgl©dem katalogu, w kt¢rym jest plik z odnoònikiem), b) trzeba utoæsamiaÜ odwoàania do tego samego pliku (np. ././plik i plik), spr¢buj np. writeln(fexpand('twojplik.pas')). - jeòli odnoònik nie jest zako‰czony przed ko‰cem wiersza, to uwaæamy go za bà©dny i ignorujemy, - jeòli plik podany w odnoòniku nie istnieje, to odnoònik uwaæamy za bà©dny i ignorujemy, - jak zwykle naleæy wypisaÜ stan pami©ci na pocz•tku dziaàania, po wygenerowaniu struktur danych i na ko‰cu dziaàania programu. - nawet nie wypada juæ przypominaÜ, æe naleæy zwolniÜ pami©Ü, a pliki pozamykaÜ.