Karel Müller (ČVUT FIT) BI-PA2, 2011, Cvičení 11-13 1/5 Katedra softwarového inženýrství Katedra teoretické informatiky, Fakulta informačních technologii, ČVUT v Praze Karel Müller, 2011 Programování a algoritmizace 2, BI-PA2, 2011, Cvičení 11-13 BI-PA2 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Karel Müller (ČVUT FIT) BI-PA2, 2011, Cvičení 11-13 2/5 Následující příklady mohou být zadány u zkoušky. Na cvičení budou probrány a za domácí úkol zadány jen některé z nich. 1. Stáhněte si a vyzkoušejte příklady z adresáře p11\matrix, array, set a table. Seznamte se s přetěžováním operátoru (), které je použito v šabloně Matrix. 2. Napište šablonu třídy Array1 pro realizaci jednorozměrného pole prvků typu T, kde parametry konstruktoru budou udávat dolní a horní mez indexu. 3. Napište šablonu třídy Array2 pro realizaci dvojrozměrného pole uloženého v souvislém paměťovém úseku, pro přístup k prvkům použijte přetížený operátor (). 4. Do třídy Set (viz přednáška) doplňte metodu card, jejímž výsledkem bude počet prvků množiny. 5. Napište šablonu třídy MultiSet úpravou třídy Set tak, aby umožňovala duplicity. Nápověda: pole upravte tak, aby každý prvek pole obsahoval počet výskytů. 6. Do šablon tříd realizujících množiny doplňte kontruktor, který vytvoří množinu z prvků pole daného parametrem. 7. Do šablon tříd realizujících množiny doplňte binární operátor pro množinovou operaci diference (rozdíl).
Karel Müller (ČVUT FIT) BI-PA2, 2011, Cvičení 11-13 3/5 8. Napište šablonu třídy List1 realizující jednosměrný spojový seznam s těmito operacemi: 9. Napište šablonu třídy List2 realizující dvojsměrný spojový seznam s těmito operacemi: 10. Napište šablonu třídy SrtList1 realizující jednosměrný vzestupně uspořádaný spojový seznam s těmito operacemi:
Karel Müller (ČVUT FIT) BI-PA2, 2011, Cvičení 11-13 4/5 11. Napište šablonu třídy SrtList2 realizující dvojsměrný vzestupně uspořádaný spojový seznam s těmito operacemi: 12. Napište šablonu třídy LstSet1 realizující množinu jednosměrným spojovým seznamem. 13. Napište šablonu třídy LstSet2 realizující množinu dvojsměrným spojovým seznamem. 14. Napište šablonu třídy SrtLstSet1 realizující množinu jednosměrným vzestupně 15. Napište šablonu třídy SrtLstSet2 realizující množinu dvojsměrným vzestupně 16. Napište šablonu třídy LstTab1 realizující tabulku jednosměrným spojovým seznamem. 17. Napište šablonu třídy LstTab2 realizující tabulku dvojsměrným spojovým seznamem. 18. Napište šablonu třídy SrtLstTab1 realizující tabulku jednosměrným vzestupně 19. Napište šablonu třídy SrtLsTabt2 realizující tabulku dvojsměrným vzestupně
Karel Müller (ČVUT FIT) BI-PA2, 2011, Cvičení 11-13 5/5 20. Napište program který přečte řadu čísel zakončenou nulou a vypíše nejprve všechna vzájemně různá záporná čísla a pak všechna vzájemně různá kladná čísla. 21. Napište program, který přečte řadu celých čísel zakončenou nulou a vypíše tabulku četnosti čísel. 22. Napište program, který přečte textový soubor složený ze slov (slovo je posloupnost písmen) a vypíše seznam vzájemně různých slov seřazený podle abecedy. 23. Napište program, který přečte textový soubor složený ze slov (slovo je posloupnost písmen) a vypíše tabulku četnosti slov. 24. Pro každou implementaci množiny odhadněte složitost operací v nejlepším a nejhorším případě. 25. Pro každou implementaci tabulky odhadněte složitost operací v nejlepším a nejhorším případě. 26. Pro různé způsoby implementace tabulky napište šablonu třídy realizující tabulku, ve které se mohou vyskytovat prvky se stejným klíčem. Operaci del(k) napište tak, aby v případě více prvků s klíčem k byl odstraněn prvek naposledy (nejdříve) vložený. 27. Do šablon realizujících množinu doplňte operaci uložení množiny do souboru a konstruktor pro vytvoření množiny ze souboru. 28. Do šablon realizujících tabulku doplňte operaci uložení tabulky do souboru a konstruktor pro vytvoření tabulky čtením souboru.