Zadania z kolokwium z dn. 18
Transkrypt
Zadania z kolokwium z dn. 18
Zestaw A: Organizacja plików: Wszystkie pliki oddawane do sprawdzenia należy zapisać we wspólnym folderze o nazwie będącej numerem indeksu, umieszczonym na pulpicie. Pliki należy podpisać wewnątrz numerem indeksu. Oddajemy tylko źródła programów (pliki o rozszerzeniach .adb i .ads)!!! Zad. 1: Napisać pakiet udostępniający: • typ Spis będący dynamiczną listą łączoną, której elementy przechowują wartości typu Rzecz (zawierającą pola ID i Licznik będące liczbami całkowitymi dodatnimi); • procedurę Wypisz wypisującą zawartość spisu będącego parametrem; • procedurę Dodaj wstawiającą do spisu podanego jako parametr rzecz o identyfikatorze podanym jako drugi parametr w następujący sposób: jeśli spis nie zawiera rzeczy o tym identyfikatorze, to element przechowujący rzecz o tym identyfikatorze i liczniku równym 1 jest dodawany na koniec spisu; jeśli zawiera, to element przechowujący tę rzecz jest przepinany na koniec spisu, a jej licznik jest zwiększany o jeden. Procedura ma nie korzystać z tablic ani spisów pomocniczych; oraz program testujący działanie pakietu poprzez pobranie spisu (procedura Dodaj; użytkownik podaje identyfikatory rzeczy które mają być wstawione do spisu i decyduje o zakończeniu podawania) oraz wypisanie jego zawartości (przykład: dla identyfikatorów wejściowych 1,2,1,3,3,4,2,1 spis uzyskuje postać (3,2),(4,1),(2,2),(1,3)). Zad. 2: Rozszerzyć pakiet z zad.1 o procedurę UsunSasiedniePowtorzone usuwającą ze spisu wszystkie co najmniej dwuelementowe grupy sąsiadujących elementów przechowujących rzeczy o tych samych licznikach (przykład: spis (3,2),(1,3),(2,3),(4,2),(5,1),(7,1),(6,1) zostanie zredukowany do (3,2),(4,2)). Pamięć zajmowana przez usuwane elementy ma zostać zwolniona, procedura ma nie korzystać z tablic ani spisów pomocniczych. Wykorzystać procedurę w programie testującym. Zad. 3: Rozszerzyć pakiet z zad.1 o procedurę UsunPowtorzone modyfikującą spis podany jako parametr poprzez usunięcie z niego wszystkich elementów przechowujących rzeczy o tych samych licznikach (przykład: spis (3,2),(1,3),(2,3),(4,2),(5,4),(7,2),(6,1) zostanie zredukowany do (5,4),(6,1)). Wymagane jest zwalnianie pamięci. Procedura nie może używać tablic ani sznurów pomocniczych. Wykorzystać procedurę w programie testującym. Zestaw B: Organizacja plików: Wszystkie pliki oddawane do sprawdzenia należy zapisać we wspólnym folderze o nazwie będącej numerem indeksu, umieszczonym na pulpicie. Pliki należy podpisać wewnątrz numerem indeksu. Oddajemy tylko źródła programów (pliki o rozszerzeniach .adb i .ads)!!! Zad. 1: Napisać pakiet udostępniający: • typ Sznur będący dynamiczną listą łączoną, której elementy przechowują liczby całkowite; • • procedurę Wypisz wypisującą zawartość sznura będącego parametrem; procedurę Wstaw wstawiającą do sznura podanego jako parametr element zawierający liczbę podaną jako parametr tak, aby sznur był uporządkowany niemalejąco (zakładając, że sznur wejściowy jest już uporządkowany w taki sposób); • procedurę Usun usuwającą ze sznura podanego jako parametr wszystkie elementy o wartości nie większej niż wartość podana jako drugi parametr. Pamięć zajmowana przez usuwane elementy ma zostać zwolniona, procedura nie może używać tablic ani pomocniczych spisów; oraz program testujący działanie pakietu poprzez pobranie sznura (procedura Wstaw; użytkownik podaje liczby które mają być wstawione do sznura i decyduje o zakończeniu podawania), wypisanie jego zawartości (procedura Wypisz; przykład: dla zestawu liczb wejściowych 1,2,1,3,3,4,2,1 sznur uzyskuje postać 1,1,1,2,2,3,3,4), a następnie usunięcie w sznurze wszystkich wartości nie większych od liczby pobranej od użytkownika (procedura Usun) i ponowne wypisanie jego zawartości (przykładowo po podaniu przez użytkownika wartości granicznej 2 powyższy sznur uzyska postać 3,3,4). Zad. 2: Rozszerzyć pakiet z zad.1 o procedurę PrzeniesNaKrance modyfikującą sznur podany jako parametr poprzez przepięcie na początek sznura wszystkich elementów zawierających wartości nieparzyste z przedziału domkniętego [a,b], a na koniec elementów o wartościach parzystych z tego zakresu (oryginalny porządek przenoszonych elementów ma zostać zachowany; krańce przedziału są podane jako parametry; przykład: dla a=3 i b=5 sznur 1,2,3,4,5,6 ma zostać zmieniony na 3,5,1,2,6,4, natomiast sznur 3,5,5,6,7 ma zostać niezmieniony). Procedura nie może wykorzystywać tablic ani spisów pomocniczych. Wykorzystać procedurę w programie testującym. Zad. 3: Rozszerzyć pakiet z zad.1 o funkcję CzyZawiera zwracającą wartość logiczną mówiącą, czy sznur S1 podany jako parametr zawiera w sobie wszystkie wartości ze sznura S2 podanego jako drugi parametr w liczności przynajmniej takiej jak w sznurze S2 (przykład: dla S1 postaci 1,2,3,3,4,5 i S2 postaci 2,3,5 powinniśmy dostać prawdę, dla S2 postaci 2,2,3 – fałsz). Należy założyć, że oba sznury wejściowe są uporządkowane niemalejąco. Procedura nie może wykorzystywać tablic ani sznurów pomocniczych. Wykorzystać procedurę w programie testującym. Zestaw C: Organizacja plików: Wszystkie pliki oddawane do sprawdzenia należy zapisać we wspólnym folderze o nazwie będącej numerem indeksu, umieszczonym na pulpicie. Pliki należy podpisać wewnątrz numerem indeksu. Oddajemy tylko źródła programów (pliki o rozszerzeniach .adb i .ads)!!! Zad. 1: Napisać pakiet udostępniający: • typ Sznur będący dynamiczną listą łączoną, której elementy przechowują znaki (wartości typu character); • procedurę Wypisz wypisującą zawartość listy będącej parametrem; • procedurę Wstaw dodającą do sznura podanego jako parametr element zawierający znak podany jako parametr tak, aby nowy element był wstawiany po ostatnim z elementów zawierających dany znak jeśli taki element występuje w sznurze, lub na końcu sznura jeśli takiego znaku w sznurze dotąd nie było; • procedurę Usun usuwającą ze sznura podanego jako parametr ostatni element, z równoczesnym zwróceniem do programu znaku przechowywanego w tym elemencie. Pamięć zajmowana przez usunięty element ma zostać zwolniona. W przypadku sznura pustego procedura ma zgłosić wyjątek sznur_pusty; oraz program testujący działanie pakietu poprzez pobranie sznura (procedura Wstaw; użytkownik podaje znaki które mają być wstawione do sznura i decyduje o zakończeniu podawania), wypisanie jego zawartości (przykład: dla zestawu znaków wejściowych a,c,a,b,b,d,c,a sznur uzyskuje postać a,a,a,c,c,b,b,d), usunięcie ostatniego elementu (procedura Usun), wypisanie wartości, która była przechowywana w tym elemencie i wypisanie pozostałego sznura (dla powyższego sznura wypisany zostanie znak d, a sam sznur uzyska postać a,a,a,c,c,b,b). Zad. 2: Rozszerzyć pakiet z zad.1 o procedurę UsunKoncowkiGrup, która modyfikuje sznur podany jako parametr poprzez usunięcie w nim ostatnich elementów co najmniej dwuelementowych grup jednakowych znaków (przykład: sznur a,a,a,c,c,c,c,b,b,d zostanie zredukowany do a,a,c,c,c,b,d). Pamięć zajmowana przez usuwane elementy ma zostać zwolniona, procedura nie może używać tablic ani pomocniczych sznurów. Wykorzystać procedurę w programie testującym. Zad. 3: Rozszerzyć pakiet z zad.1 o procedurę ZamienParzyste o dwóch parametrach wejściowowyjściowych S1 i S2 będących sznurami. Procedura ma modyfikować oba sznury przez zamianę miejscami (przepięcie z S1 do S2 i z S2 do S1) wszystkich odpowiadających sobie miejscami elementów stojących na parzystych pozycjach (drugi z drugim, czwarty z czwartym itd., o ile taki element w danym sznurze jest; przykład: sznury a,b,c,d,e,f,g,h i u,x,y,z zostaną przekształcone do a,x,c,z,e,f,g,h i u,b,y,d). Procedura nie może używać tablic ani pomocniczych sznurów. Wykorzystać procedurę w programie. Zestaw D: Organizacja plików: Wszystkie pliki oddawane do sprawdzenia należy zapisać we wspólnym folderze o nazwie będącej numerem indeksu, umieszczonym na pulpicie. Pliki należy podpisać wewnątrz numerem indeksu. Oddajemy tylko źródła programów (pliki o rozszerzeniach .adb i .ads)!!! Zad. 1: Napisać pakiet udostępniający: • typ Sznur będący dynamiczną listą łączoną, której elementy przechowują liczby całkowite; • • procedurę Wypisz wypisującą zawartość listy będącej parametrem; procedurę Wstaw dodającą na końcu sznura podanego jako parametr element zawierający liczbę podaną jako parametr • procedurę UsunCo2OdN usuwającą ze sznura podanego jako parametr element N-ty (gdzie N jest liczbą całkowitą dodatnią będącą parametrem procedury) oraz co drugi następujący za nim (czyli N+2-gi, N+4-ty itd). W przypadku sznura mającego mniej niż N elementów sznur powinien pozostać bez zmiany. Pamięć zajmowana przez usunięty element ma zostać zwolniona, procedura nie powinna używać tablic ani sznurów pomocniczych. oraz program testujący działanie pakietu poprzez pobranie sznura (procedura Wstaw; użytkownik podaje liczby które mają być wstawione do sznura i decyduje o zakończeniu podawania), wypisanie jego zawartości (przykład: dla zestawu liczb wejściowych 7,4,5,6,3,7,9,2,1 sznur uzyskuje postać 7,4,5,6,3,7,9,2,1), usunięcie co drugiego elementu zaczynając od N-tego po uprzednim pobraniu wartości N (procedura UsunCo2OdN) i wypisanie pozostałego sznura (dla powyższego sznura i N=4 wypisany zostanie sznur 7,4,5,3,9,1, dla tego samego sznura i N=10 – sznur 7,4,5,6,3,7,9,2,1 ). Zad. 2: Rozszerzyć pakiet z zad.1 o procedurę Przestaw, która modyfikuje sznur podany jako parametr poprzez przestawienie (przepięcie) na jego początek wszystkich elementów przechowujących liczby parzyste i równocześnie większe od N (gdzie N jest liczbą całkowitą będącą parametrem procedury), zachowując przy tym ich uporządkowanie w oryginalnym sznurze (przykład: dla N=3 sznur 4,3,5,4,6,7,2,4,3,8,4,9,3 zostanie przekształcony do 4,4,6,4,8,4,3,5,7,2,3,9,3). Procedura nie może używać tablic ani pomocniczych sznurów. Wykorzystać procedurę w programie testującym. Zad. 3: Rozszerzyć pakiet z zad.1 o funkcję CzyZawarty zwracającą wartość logiczną mówiącą, czy sznur S1 podany jako parametr zawiera w sobie „odpowiedniki” wszystkich elementów sznura S2 podanego jako drugi parametr (gdzie „odpowiednikiem” elementu jest element przechowujący tę samą wartość; przy czym każdy element S1 jest odpowiednikiem co najwyżej jednego elementu S2), uporządkowane tak samo jak w sznurze S2 ale niekoniecznie umieszczone bezpośrednio po sobie (przykład: dla S1 postaci 7,1,2,3,9,3,4,1 i S2 postaci 2,3,3,1 powinniśmy dostać prawdę [bo w S1 występują wszystkie liczby z S2, odpowiednio ułożone], dla S2 postaci 2,1,3 – fałsz [bo w S1 występują wszystkie liczby z S2, ale nie jest zachowany porządek], dla S2 postaci 2,3,3,3,1 – fałsz [bo jedna z trójek nie ma „odpowiednika”]). Procedura nie może wykorzystywać tablic ani sznurów pomocniczych. Wykorzystać procedurę w programie testującym.