(--Практикум--) Домашно за 2, 3, 6 група
Completion requirements
Opened: Sunday, 25 April 2010, 8:35 AM
Due: Sunday, 2 May 2010, 8:35 AM
Домашното тук е да се напише структурата Dictionary, която разглеждахме в часа. Ако някой от втора група е направил задачата за опашката, може да прати нея вместо това.
Dictionary представя структура, много подобна на речник. Той е поредица от елементи, като всеки елемент е двойка - дума и нейното значение (напр. "река" и "течаща водна маса"). Думите (наричани още ключове) не могат да се повтарят, но значенията (наричани още стойности) могат. Поредицата не е наредена, т.е. не можем да поискаме първия или втория елемент от речника. Можем да намерим значението на дадена дума, като я потърсим в речника.
В практиката тази структура от данни не се използва само с думи (char*), а с всякакви типове данни във вид на таблица (например вместо дума имаме някакъв вид животно от клас Животно, а вместо значение - килограмите му в double). Разлката с двумерния масив е, че елементите не са подредени първи, втори, трети, а се търсят по ключ.
С оглед на всичко казано дотук, да се реализира шаблонна структура речник, която да работи с всякакви типове данни за ключ и стойност (T, V), такива че данните от тип Т да могат да се сортират.
template
class Dictionary
{
//вътрешно представяне - данните да се пазят сортирани по ключ! Параметърът N указва максималния размер на речника, ако не сте взимали този материал, използвайте константа 100
//голяма четворка (конструктори, дестр, оператор =, ако има нужда)
//да се реализрат следните методи:
bool add(T& key, V& value); //да връша истина, ако успешно е добавило елемент, т.е. вече няма такъв ключ. Този метод трябва да пази сортировката!!!
bool remove(T& key); //изтрива елемента с дадения ключ и връща истина, ако е имало такъв
V operator[](T& key); //ако няма такъв елемент, да се изведе съобщение на екрана и да се върне обектът по подразбиране от тип V (чрез дефолтния конструктор); Забележка - търсенето на елемент да е двоично!
int getSize(); //текущия брой елементи в речника
};
Да се дефинира подходяща приятелска функция така че cout<
Срокът е до 2ри май.
Dictionary представя структура, много подобна на речник. Той е поредица от елементи, като всеки елемент е двойка - дума и нейното значение (напр. "река" и "течаща водна маса"). Думите (наричани още ключове) не могат да се повтарят, но значенията (наричани още стойности) могат. Поредицата не е наредена, т.е. не можем да поискаме първия или втория елемент от речника. Можем да намерим значението на дадена дума, като я потърсим в речника.
В практиката тази структура от данни не се използва само с думи (char*), а с всякакви типове данни във вид на таблица (например вместо дума имаме някакъв вид животно от клас Животно, а вместо значение - килограмите му в double). Разлката с двумерния масив е, че елементите не са подредени първи, втори, трети, а се търсят по ключ.
С оглед на всичко казано дотук, да се реализира шаблонна структура речник, която да работи с всякакви типове данни за ключ и стойност (T, V), такива че данните от тип Т да могат да се сортират.
template
class Dictionary
{
//вътрешно представяне - данните да се пазят сортирани по ключ! Параметърът N указва максималния размер на речника, ако не сте взимали този материал, използвайте константа 100
//голяма четворка (конструктори, дестр, оператор =, ако има нужда)
//да се реализрат следните методи:
bool add(T& key, V& value); //да връша истина, ако успешно е добавило елемент, т.е. вече няма такъв ключ. Този метод трябва да пази сортировката!!!
bool remove(T& key); //изтрива елемента с дадения ключ и връща истина, ако е имало такъв
V operator[](T& key); //ако няма такъв елемент, да се изведе съобщение на екрана и да се върне обектът по подразбиране от тип V (чрез дефолтния конструктор); Забележка - търсенето на елемент да е двоично!
int getSize(); //текущия брой елементи в речника
};
Да се дефинира подходяща приятелска функция така че cout<
Срокът е до 2ри май.