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.

Podobne dokumenty